프릴

Fril
프릴
패러다임논리 프로그래밍
설계자트레버 마틴
첫 등장1980; 42년 전 (1998년)
안정적 해제
4.984 / 2011년 8월 23일; 10년 전(2011-08-23)
면허증독점 소프트웨어
파일 이름 확장명.frl
영향을 받은
마이크로프로로그[es]

프릴은 1차 술어인 미적분의 프로그래밍 언어다.서브셋으로 Prolog의 의미론을 포함하지만, Logic Programming Associates의 마이크로-PROLOG[es]에서 그 구문을 취하며 퍼지 집합, 지원 논리, 메타프로그래밍에 대한 지원을 추가한다.

프릴은 원래 1980년경 브리스톨 대학의 트레버 마틴과 짐 볼드윈에 의해 개발되었다.1986년 인스투A에 의해 픽업되어 더욱 발전하였다.I. Research, 나중에 Fril Systems Ltd.가 되었다.프릴이라는 이름은 원래 퍼지 관계 추론 언어의 약어였다.

프롤로그와 프릴 비교

프릴의 불확실성 관리 기능 외에도 프릴의 표준 프롤로그 기능 구현에는 약간의 차이가 있다.

종류들

프릴의 기본 유형은 프롤로그의 기본 유형과 유사하며, 한 가지 중요한 예외는 프롤로그의 복합 데이터 유형은 용어인데, 리스트는 다음을 사용하여 중첩된 항으로 정의된다..functor; Fril에서 복합 유형은 목록 그 자체로 대부분의 구성의 기초를 형성한다.변수는 대문자와 밑줄만 포함하는 식별자로 구분된다(Prolog에는 첫 번째 문자만 대문자로 표시됨).Prolog에서와 같이 이름_"모든 값"을 의미하도록 예약되어 있으며, 이 경우_구별되는 변수에 의해 대체된다.

구문

프롤로그는 전형적인 문장 부호의 양을 가진 구문을 가지고 있는 반면 프릴은 리스프의 구문과 유사하게 극히 단순한 구문을 가지고 있다.(proposal) 조항은 술어와 그 논거(있는 경우)로 구성된 목록이다.최상위 구성의 유형으로는 규칙과 직접 모드 명령이 있다.

규칙

규칙은 가설(골) 뒤에 나오는 결론으로 구성된 목록이다.일반적인 형태는 다음과 같다.

(fact) (실제 목표_1 …골_n)

이는 각 Prolog 구조와 동일하다.

사실. 결론 :- 골_1, ... 골_n. 

예를 들어, 다음 사항을 고려하십시오.member프로로그의 술어:

 회원(E, [E _]).  회원(E, [_ T]) :- 회원(E, T). 

프릴에서는 다음과 같이 된다.

((멤버 E (E _)))((멤버 E (_ T))(멤버 E T))

관계

어떤 데이터는 관계의 형태로 나타낼 수 있다.관계란 술어명이 동일하고 신의가 일정한 사실의 집합에 해당하는 것으로, 사실 중 어느 것도 제거할 수 없다는 것을 제외한다(이에 의한 것 이외에는).kill관계를 포함); 그러한 표현은 내부적으로 더 적은 메모리를 소비한다.관계는 말 그대로 술어 이름 뒤에 하나 이상의 관계 튜플(술어 이름 없이 등가 팩트의 모든 주장)으로 구성된 리스트로 기록된다.술어는 또한 사람을 불러 관계를 선언할 수도 있다.def_rel술어, 이것은 제안된 이름이 기술 자료에 아직 존재하지 않는 경우에만 작동한다.술어가 관계인 경우, 일반적으로 규칙을 추가(그리고 관계 제약을 위반하지 않음)하는 모든 것이 대신 관계에 튜플을 자동으로 추가한다.

여기 예가 있다.다음과 같은 사실 집합:

((내 이하 2 3) (내 이하 8 23)) ((42 이하))

다음과 같은 관계로서 다시 쓸 수 있다.

(내 이하 (2 3) (8 23) (42 69)) (42 69)

다이렉트 모드

다음 구문을 사용하여 정확히 하나의 인수로 술어를 호출할 수 있다.

술어를 붙이다 언쟁점 

이 구문을 사용하여 쿼리를 제출하며 술어는 다음과 같다.?(또는 다른 쿼리 관련 술어 중 하나)

퍼지 집합

프릴은 연속 퍼지 집합과 이산 퍼지 집합 모두를 지원하며, 각각 고유한 특수 구문을 가지고 있다.이산형 집합(dtype)은 이산형 값과 그 멤버십 정도를 나열하며, 다음과 같은 구문을 사용한다.

{value:dom value:dom ... value:dom}

값은 원자 또는 숫자이고, 돔은 간격의 값이다 [0, 1].

연속 집합(이형)은 실제 숫자와 그 멤버십 정도를 나열하며, 멤버십 등급 함수는 이러한 매핑에 대한 선형 보간이다.구문은 다음과 같다.

[값:dom 값:dom ...값:dom]

여기서 값을 비반복 순서로 지정해야 한다.

각 dtype과 itype은 우주(허용 가능한 값의 집합)에 구속될 수 있다.프릴에는 퍼지 집합 연산의 술어가 있지만 퍼지 로직을 통한 제어를 직접 지원하지는 않는다.dtype이 실제 숫자만 포함하는 한, 일부 연산을 통해 dtype과 itype을 결합하는 것도 가능하다.

서포트 쌍

어떤 규칙도 추가함으로써 관련 확률 구간(지원 쌍이라고 함)을 가질 수 있다.:(min max)최소 및 최대 확률은 최소 및 최대 확률이다.프릴에는 주어진 쿼리에 대한 지원을 계산하는 술어가 포함되어 있다.

분리

Prolog가 구두점(즉, 구두점)을 사용하는 동안;— 조항 내에서 분리하기 위해 프릴은 대신 기본 제공 술어를 사용한다.orr.

장점

이 간단한 구문에는 장단점이 있다.긍정적인 측면에서는 프롤로그와 같은 술어를 렌더링한다.=..(목록과 절 사이에 지도) 불필요한 것은 조항이 목록이기 때문이다.반면에 읽기가 더 어렵다.

행동

로직 프로그래밍 환경으로서 프릴은 프롤로그와 매우 비슷하다.다음은 몇 가지 차이점이다.

  • 프롤로그와 프릴은 둘 다 쉘 어플리케이션을 가지고 있는데, 이것은 그들과 상호작용하는 표준적인 방법의 역할을 한다.프롤로그는 두 가지 모드에서 명령을 읽는다: 소스 파일 읽기 모드에서는 명령어와 절을 받아들인다; 사용자 상호작용 모드에서는 쿼리만 받아들인다(프로로그에게 명령어와 절을 표준 입력에서 읽도록 명령하는 것은 사용으로 가능함).consult(user).프릴은 구별하지 않는다: 모든 유형의 명령은 소스 파일과 명령줄에서 모두 제공될 수 있다.
  • Prolog 셸은 질의에 나타나는 모든 인스턴스화 변수의 값을 예 또는 아니오 답변과 함께 자동으로 인쇄한다.프릴 셸은 답을 줄 뿐이다. 원하는 경우 변수를 인쇄하는 것은 사용자의 책임이다.

참조

외부 링크

  • Fril - 다운로드 가능한 리소스, Fril 공식 다운로드 사이트
  • [로직 프로그래밍(Fril) 및 인공지능 랩], 쩡창 진