从子句中删除头



我正在使用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标准

相关内容

  • 没有找到相关文章

最新更新