2013-05-14 105 views
0

我正在使用yap。 假設我有這種情況:prolog刪除子句頭

p(x,y): - q(x),f(x,y),g(x)。

我需要使用命令列表(p)將謂詞的主體放在列表中。

預期輸出應該是: [q,f,g]。

我該怎麼做?

+0

以'listing'的輸出,也許提取相關信息? – 2013-05-14 17:45:31

+0

該怎麼辦?我是序言新手:) – ameyer 2013-05-14 18:11:10

回答

0

與服務謂語

enum_conj((A, B),X) :- !, (enum_conj(A, X) ; enum_conj(B, X)). 
enum_conj(X, X). 

我們可以做

?- clause(p(_, _), P), setof(F, J^A^(enum_conj(P, J), functor(J, F, A)), L). 
L = [f,g,q], 
P = (q(x),f(x,y),g(x)) 

使用的所有內建的ISO標準