Ассоциация в Common Lisp

Имеется структура следующего формата:

 (setq dist '(((1 1) 1)
              ((0 2) 3)
              ((1 2) 1)
              ((2 3) 3)
              ((3 5) 4)))

Есть ли какая-нибудь функция, которая, если я позвоню

(myf '(0 2))

мог дать мне

3

or

((0 2) 3)

Что-то вроде реверса assoc


person mnv    schedule 05.12.2009    source источник


Ответы (1)


Я не понимаю, почему это можно назвать обратным ASSOC.

(assoc '(0 2) dist :test #'equal)
> ((0 2) 3)

Похоже, что ASSOC работает нормально, если вы измените функцию test, чтобы списки, используемые в качестве ключей, были правильно протестированы.

person Jerome    schedule 05.12.2009
comment
Кстати, если вам действительно нужен обратный ассоциатив, то есть найти пару, в которой совпадает CDR, есть RASSOC. - person Svante; 08.12.2009