Следующий предикат более высокого порядка преуспевает, если все пары элементов списка верны для данного отношения. Есть ли общее или лучшее, большее намерение, раскрывающее имя для этого отношения?
Моя оригинальная мотивация для этого имени заключалась в том, что в clpfd, часто существует ограничение all_different/1
, которое описывается как истинное, если элементы попарно отличаются друг от друга. На самом деле, скорее, предпочитают говорить, что все элементы разные, но меня часто исправляли (другими программистами Пролога), чтобы использовать их по-разному. Фактически это ограничение теперь наиболее естественно выражается как 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 нашел его: name pairwise
в отличие от потокового.
Посмотрел на МО и математику: