Prolog Language
고차 프로그래밍
수색…
호출 / N 술어
프리디 케이트의 call/N
계열은 런타임에 임의의 Prolog 목표를 호출 할 수 있습니다.
?- G=true, call(G).
true.
?- G=(true,false), call(G).
false.
매 플리스트 / [2,3]
maplist/2
와 maplist/3
은 하나의 요소에 관한 술어의 정의가 그러한 요소들의 리스트 로 maplist/3
수 있도록 해주는 상위 순서 술어입니다. 이 술어는 call/2
및 call/3
을 빌딩 블록으로 사용하여 정의 할 수 있으며 많은 Prolog 시스템과 함께 제공됩니다.
예 :
?- maplist(dif(a), [X,Y,Z]).
dif(X, a),
dif(Y, a),
dif(Z, a).
메타 콜
Prolog에서 소위 메타 콜 은 기본 제공 언어 기능입니다. 모든 Prolog 코드는 Prolog 용어 로 표현되어 목표를 동적으로 구성하고 추가 술어없이 다른 목표처럼 사용할 수 있습니다.
?- Goal = dif(X, Y), Goal.
dif(X, Y).
이 메커니즘을 사용하면 Prolog 자체에서 다른 상위 순서 술어를 정의 할 수 있습니다.
foldl / 4
접은 부분 (왼쪽부터)은 다음 중 더 높은 순서의 관계입니다.
- 3 개의 인자를 가진 술어
- 요소 목록
- 초기 상태
- 최종 상태. 중간 상태를 수행하면서 연속 요소에 술어를 적용한 결과입니다.
예 : 목록에서 모든 요소의 합계 를 표현하려면 foldl/4
를 사용하고 두 요소의 합을 정의하는 기준 블록을 사용합니다.
?- foldl(plus, [2,3,4], 0, S).
S = 9.
목표 목록 불러 오기
목표의 목록 인 것처럼 목표 목록을 호출하려면 고위 술어 call / 1과 maplist / 2를 결합하십시오.
?- Gs = [X = a, Y = b], maplist(call, Gs). Gs = [a=a, b=b], X = a, Y = b.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow