元:「remove 述語の定義―リスト[a:1, a:2]から「a:_」をすべて取り除いた結果は?」(http://codetter.com/?p=1077)
特にメリットはない。
元:「remove 述語の定義―リスト[a:1, a:2]から「a:_」をすべて取り除いた結果は?」(http://codetter.com/?p=1077)
特にメリットはない。
% can_unify/2 % 「can_unify(X, Y) が成功する」⇔「X = Y が成功する」、ただし単一化は行われない。 can_unify(X, Y) :- setof(Z, (Z = X, X = Y), [_|_]). ?- can_unify(a:_, a:1). ?- \+ can_unify(b:_, a:_). remove(_, [], []). remove(E, [H|Src], Dst ) :- can_unify(E, H), !, remove(E, Src, Dst). remove(E, [H|Src], [H|Dst]) :- remove(E, Src, Dst). ?- remove(a:_, [a:1, a:1, a:2, b:2], [b:2]).