프롤로그 프로그램에 술어가 있는지 어떻게 확인할 수 있습니까?Prolog : 술어가 있는지 확인하는 방법?
이?- exists(some_predicate).
false.
?- assert(some_predicate).
true.
?- exists(some_predicate).
true.
프롤로그 프로그램에 술어가 있는지 어떻게 확인할 수 있습니까?Prolog : 술어가 있는지 확인하는 방법?
이?- exists(some_predicate).
false.
?- assert(some_predicate).
true.
?- exists(some_predicate).
true.
당신은 current_predicate/1, current_predicate/2 또는 predicate_property/2을 사용할 수 있습니다 (마지막을 위해 당신은 아마 functor/3이 필요합니다) : 그와 같은 exists/1
것
?- current_predicate(a/1).
false.
?- functor(A,a,1),predicate_property(A,visible).
false.
?- functor(A,a,1),current_predicate(_,A).
false.
?- assert(a(42)).
true.
?- current_predicate(a/1).
true.
?- functor(A,a,1),predicate_property(A,visible).
A = a(_G136).
?- functor(A,a,1),current_predicate(_,A).
A = a(_G122).
current_predicate/2
및 predicate_property/2
(가시와) 경우 성공 술어는 currrent_predicate/1
이 실패하는 동안 자동로드 될 수 있습니다.
'구식 방식'이지만 ISO에서 허용되는 경우는 012입니다./2 오래된 예제 중 일부를 재사용하거나 탐색 할 때 발생할 수 있습니다.
예 :
?- [user].
|: app([], Y, Y).
|: app([X|Xs], Y, [X|Zs]) :- app(Xs, Y, Zs).
|: % user://1 compiled 0,15 sec, 17 clauses
true.
?- clause(app(X,Y,Z),Body).
X = [],
Y = Z,
Body = true ;
X = [_G338|_G339],
Z = [_G338|_G342],
Body = app(_G339, Y, _G342).
이 단지 공용 속성을 지닌 술어를 위해 ISO에서 허용됩니다! 기본적으로 정적 코드에서는 작동하지 않습니다. – false