Prolog谓词结果

时间:2013-11-30 05:56:43

标签: prolog

我写了一个Prolog关系remove(E,L,R),如果R是从列表E中删除L的一个实例而导致的列表,那么这是真的。如果E不是L的成员,则该关系为false。

我想知道以下查询的结果

remove(p(X),[a,p(a),p(p(a)),p(p(p(a)))],R).

1 个答案:

答案 0 :(得分:1)

所以?请问。不是我们,而是问Prolog。结果应该

?- remove(p(X),[a,p(a),p(p(a)),p(p(p(a)))],R).
X = a,
R = [a, p(p(a)), p(p(p(a)))]
如果你把它写得正确的话,那就是这些方面的东西。如果您允许回溯(换句话说,从列表中删除 元素,从第一个开始),您将获得类似

的内容
?- remove(p(X),[a,p(a),p(p(a)),p(p(p(a)))],R).
X = a,
R = [a, p(p(a)), p(p(p(a)))] ;
X = p(a),
R = [a, p(a), p(p(p(a)))] ;
X = p(p(a)),
R = [a, p(a), p(p(a))] ;
false.