2012-10-14 46 views

Trả lời

11

Bạn có thể sử dụng current_predicate/1, current_predicate/2 hoặc predicate_property/2 (đối với cuối cùng bạn có thể sẽ cần 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 (với nhìn thấy được) thành công nếu vị từ có thể được tự động tải trong khi currrent_predicate/1 không thành công

1

'cách cũ' nhưng được chấp nhận theo ISO, là clause/2. Bạn có thể gặp nó khi đang sử dụng lại/duyệt một số ví dụ cũ hơn.

dụ:

?- [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). 
+2

này được chấp nhận trong ISO chỉ dành cho các vị từ với các tài sản công cộng! Theo mặc định, nó không hoạt động với mã tĩnh. – false

Các vấn đề liên quan