我想从列表中删除所有包含[['One', _], _]
的列表。我创建了以下条款,delete_all
,永远奏效,除了我的情况:如何从列表中删除所有子列表?
delete_all(_,[],[]) :- !.
delete_all(X,[X|Tail],List) :-
!,
delete_all(X,Tail,List).
delete_all(X,[A|Tail],[A|List]) :-
delete_all(X,Tail,List).
例子:(这个效果很好)
?- delete_all(3,[3,4,3,5,3],K).
K = [4, 5] .
但效果很差:
delete_all([['One', _], _], [[['One', 'Six'], 94],
[['One', 'Ten'], 13], [['Two', 'Nine'], 35]], Y).
Y = [[['One', 'Ten'], 13], [['Two', 'Nine'], 35]].
为什么它只删除第一个元素?什么可能是错的?
非常感谢你。 – Vincenzoni