(1) 如何使用 Prolog 定义 delete(X,L1,L2)
关系,其中 L2
是其中项目 X
的结果列表code> 已从列表 L1
(2)如何绘制推导树来回答以下查询?
| ?- delete(3,[4,10,6,8,1,3,9],L)
最佳答案
保存logical-purity通过使用 meta-predicate tfilter/3
并具体化不平等dif/3
:
?- tfilter(dif(3),[ 4, 10,6,8,1,3,9],[4,10,6,8,1,9]).
true.
?- tfilter(dif(3),[3,3,3,4,3,3,10,6,8,1,3,9],[4,10,6,8,1,9]).
true.
请注意,这对于非基础术语也同样有效!
?- tfilter(dif(Y),[A,B],Xs).
Xs = [ ], Y = A, A = B ;
Xs = [ B], Y = A, dif(A,B) ;
Xs = [A ], Y = B, dif(B,A) ;
Xs = [A,B], dif(Y,B), dif(Y,A).
关于prolog - 如何使用 prolog 定义删除(X,L1,L2)关系,其中 L2 是结果列表,其中项目 X 从列表 L1 中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29957190/