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