0

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

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

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

预期输出应为:[q,f,g]。

我怎么能这样做?

4

1 回答 1

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 标准

于 2013-05-14T18:00:46.053 回答