Prolog Language
연산자
수색…
미리 정의 된 연산자
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
는 함수의 위치를 나타내고x
및y
는 인수의 위치를 나타냅니다.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