Общий лисп, неопределенное поведение функции пересечения? - PullRequest
6 голосов
/ 29 сентября 2011

В соответствии с записью CLHS для функции INTERSECTION (http://www.lispworks.com/documentation/HyperSpec/Body/f_isec_.htm):

Для каждой пары, удовлетворяющей критерию, будет поставлен ровно один из двух элементов парыв результате.

Моя проблема в том, что мне нужно знать , какой из двух элементов пары будет добавлен в результат, что имеет значение, когда, например :key #'car используется для извлечения аргументов для проверки, поскольку cdr может отличаться. Я хотел бы иметь гарантию, что в результат будет всегда помещен либо первый, либо всегда второй элемент. Я что-то упустил или этопросто неопределенное поведение, поэтому я не должен использовать его для моего случая?

1 Ответ

6 голосов
/ 29 сентября 2011

intersection просто не дает желаемой гарантии; он реализует теоретико-множественное пересечение с множеством дополнений, но только не с этим. Тебе придется свернуть свое.

...