Prolog - 采取操作元素

时间:2017-01-12 22:00:45

标签: prolog

我需要一个谓词elements(X,L),其中X是类似neg XX and Y的操作,并返回一个列表L,其中包含操作中的所有元素,如[X,Y]。< / p>

我已经有了这些:

elements(neg X, [X]).
elements(X and Y, [X,Y]).
elements(X or Y, [X,Y]).
elements(X imp Y, [X,Y]). 

但我不知道如何使其适用于X imp (Y or Z)等复杂的操作。

1 个答案:

答案 0 :(得分:2)

我不擅长选择运算符优先级,但这就是我输入的内容:

:- op(100, fx, neg).
:- op(200, xfy, and).
:- op(200, xfy, or).
:- op(300, xfy, imp).

elements(Term, Variables) :- term_variables(Term, Variables).

这似乎符合你的指定:

?- elements(X imp (Y and Z), Q).
Q = [X, Y, Z].

你的问题还有更多吗?