次の高次述語は、リストの要素のすべてのペアが特定の関係に対して true である場合に成功します。この関係に共通の、またはより良い、より意図を明らかにする名前はありますか?
この名前を付けた当初の動機は、clpfdall_different/1
では、要素がペアごとに異なる場合に、真であると記述される制約がしばしばあるということでした。実際には、要素がすべて異なると言うほうが好ましいのですが、私は (Prolog プログラマーの仲間によって) ペアワイズ ディファレンスを使用するように頻繁に修正されています。実際、この制約は として最も自然に表現できるようになりましpairwise(#\=, Zs)
た。
pairwise(Rel_2, Xs) :-
i_pairwise(Xs, Rel_2).
i_pairwise([], _).
i_pairwise([X|Xs], Rel_2) :-
maplist(call(Rel_2,X),Xs),
i_pairwise(Xs, Rel_2).
@aBathologist が観察したように、ペアワイズは適切な言葉ではありませRel
ん。
また、失敗する可能性がありますが、それでも成功する可能性がRel
あるため、関係は完全な関係ではありません。call(Rel, X, X)
pairwise(Rel, Xs)
私も大騒ぎしました(a->a->Bool)->[a]->Bool
。しかし、Hayooはそれを見つけましたpairwise
。
MOと数学を見た: