リストから指定されたすべての述語を削除したいa
。結果は次のようになります。
?- delete_all(a(_), [a(1),a(2),a(3),b(1)], R).
R = [b(1)]
コードは Amzi-Prolog にある必要があるため、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)]
これは真実ではありません:(