我想从列表中删除名为a
的所有谓词。结果必须如图6-8所示:从Prolog中的列表中删除谓词
?- delete_all(a(_), [a(1),a(2),a(3),b(1)], R).
R = [b(1)]
请不要给我建在SWI或他人的解决方案,因为代码必须是暗洗,序言。
谢谢。
编辑:我曾尝试下面的代码,但它仅适用于原子正常工作:
remove_all(X,[],[]).
remove_all(X,[X|L],R):-remove_all(X,L,R).
remove_all(X,[Y|L],R):-not(X=Y), remove_all(X,L,M), R=[Y|M].
?-remove_all(a(_), [a(1),a(2),a(3),b(1)], R).
R=[a(2),a(3),b(1)]
这是不正确:(
我曾尝试以下代码: 'REMOVE_ALL(X,[],[])。 remove_all(X,[X | L],R): - remove_all(X,L,R)。删除_all(X,[Y | L],R): - 不是(X = Y),remove_all(X,L,M),R = [Y | M] 但它只删除原子。 – 2012-04-06 09:47:13
用该代码编辑您的帖子 – whd 2012-04-06 10:03:49
你有什么想法吗? – 2012-04-06 10:10:30