2009-12-05 15 views
6

Hay una estructura de la siguiente formato:Asociación en Common Lisp

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

¿Hay alguna función que, si llamo

(myf '(0 2)) 

me podría dar

3 

o

((0 2) 3) 

Algo así como una marcha atrás assoc

Respuesta

8

no veo por qué esto se llama un ASSOC inversa.

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

Parece que ASSOC funciona bien, siempre y cuando cambie la función prueba, por lo que las listas utilizadas como teclas se prueban correctamente.

+2

Por cierto, si realmente desea una asoc "inverso", es decir, encontrar la pareja, donde coincide con el CDR, hay RASSOC. – Svante