수색…


미리 정의 된 연산자

ISO / IEC 13211-1 및 13211-2에 따른 사전 정의 된 연산자 :

우선 순위 유형 운영자 용도
1200 xfx :- -->
1200 FX :- ?- 지침, 쿼리
1100 년 xfy ;
1050 xfy ->
1000 xfy ','
900 fy \+
700 xfx = \\= 기간 통일
700 xfx == \\== @< @=< @> @>= 기간 비교
700 xfx =..
700 xfx is =:= =\= < > =< >= 산술 평가 및 비교
600 xfy : 모듈 자격
500 yfx + - /\ \/
400 yfx * / div mod // rem << >>
200 xfx ** 부력
200 xfy ^ 가변 부량, 정수 전력
200 fy + - \ 산술 정체성, 부정; 비트 단위 보수

많은 시스템이 추가 운영자를 특정 구현 확장으로 제공합니다.

우선 순위 유형 운영자 용도
1150 FX dynamic multifile discontiguous initialization 표준 지시문
1150 FX mode public volatile block meta_predicate
900 fy spy nospy

연산자 선언

Prolog에서 사용자 정의 연산자는 op/3 사용하여 정의 할 수 있습니다.

op(+Precedence, +Type, :Operator)

  • 연산자를 우선 순위가있는 유형의 연산자로 선언합니다. 연산자는 이름 목록 일 수 있으며,이 경우 목록의 모든 요소는 동일한 연산자로 선언됩니다.

  • 우선 순위는 0에서 1200 사이의 정수이며 0은 선언을 제거합니다.

  • 형식은 xf , yf , xfx , xfy , yfx , fy 또는 fx 중 하나입니다. 여기서 f 는 함수의 위치를 ​​나타내고 xy 는 인수의 위치를 ​​나타냅니다. y 는 우선 순위가 functor의 우선 순위보다 낮거나 같은 용어를 나타냅니다. 반면 x 는 엄격하게 낮은 우선 순위를 나타냅니다.

    • 접두어 : fx , fy
    • 중위 xfx : xfx (연관 없음), xfy (오른쪽 연관), yfx (왼쪽 연관)
    • 후위 : xf , yf

사용 예 :

:- op(900, xf, is_true).

X_0 is_true :-
  X_0.

검색어 예 :

?- dif(X, a) is_true.
dif(X, a).

용어 순서

표준 주문을 통해 두 가지 용어를 비교할 수 있습니다.

변수 @ <numbers @ <atoms @ <strings @ <structures @ <lists

노트:

  • 구조는 먼저 펑터 (functor)에 의해 알파벳 순서로 비교되고, 그 다음에 arity에 의해 그리고 마지막으로 각 인수의 비교에 의해 비교됩니다.

  • 목록은 먼저 길이별로 비교 한 다음 각 요소별로 비교합니다.

주문 운영자 성공하면
X @ <Y 표준 순서에서 X가 Y보다 작습니다.
X @> Y X는 표준 순서에서 Y보다 큽니다.
X @ = <Y X는 표준 순서에서 Y보다 작거나 같습니다.
X @> = Y X는 표준 순서에서 Y보다 크거나 같습니다.

검색어 예 :

?- alpha @< beta.
true.

?- alpha(1) @< beta.
false.

?- alpha(X) @< alpha(1).
true.

?- alpha(X) @=< alpha(Y).
true.

?- alpha(X) @> alpha(Y).
false.

?- compound(z) @< compound(inner(a)).
true.

기간 평등

항등 연산자 성공하면
X = Y X는 Y와 통합 될 수 있습니다.
X \ = Y X는 Y와 통합 될 수 없다.
X == Y X와 Y는 동일합니다 (즉, 변수 바인딩 없이 단일화됩니다)
X \ == Y X와 Y는 동일하지 않다.
X = : = Y X와 Y는 산술적으로 동일합니다.
X = \ = Y X와 Y는 산술적으로 동일하지 않습니다.


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow