且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Prolog:如何检查谓词是否存在?

更新时间:2023-11-25 23:35:34

您可以使用 current_predicate/1current_predicate/2predicate_property/2(最后你可能需要functor/3):

You can use current_predicate/1, current_predicate/2 or predicate_property/2 (for the last you will probably need functor/3):

?- 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/2predicate_property/2(带可见)成功,如果谓词可以自动加载而 currrent_predicate/1 失败

current_predicate/2 and predicate_property/2 (with visible) succeeds if the predicate can be autoloaded while currrent_predicate/1 fails