prolog从一个条款删除头

时间:2013-05-14 17:11:40

标签: list prolog yap

我正在使用yap。 假设我有这种情况:

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

我需要使用命令 listing(p)将谓词的主体放在列表中。

预期产量应为: [Q,F,G]。

我怎么能这样做?

1 个答案:

答案 0 :(得分: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标准