我写了一个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).
答案 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.