我正在使用yap。假设我有这样的场景:
p(x,y):- q(x), f(x,y), g(x).
我需要使用命令listing(p)将谓词的主体放在列表中。
期望输出应该是:[q, f, g] .
我怎么能做到呢?
使用服务谓词
enum_conj((A, B),X) :- !, (enum_conj(A, X) ; enum_conj(B, X)).
enum_conj(X, X).
we can do
?- 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标准