Supongamos que tengo una lista asociada como esta:
(setq x '((foo . ((bar . "llama")
(baz . "monkey")))))
Y quiero el valor en bar
. Puedo hacer esto:
(assoc-default 'bar (assoc-default 'foo x))
Pero lo que realmente me gustaría es algo que acepte varias claves, como
(assoc-multi-key 'foo 'bar x)
¿Existe tal cosa, tal vez en un paquete en alguna parte? Estoy seguro de que podría escribirlo, pero siento que mi Google-fu está fallando y no puedo encontrarlo.
setq
formulario en el ejemplo confuso, así que lo edité para usar la notación de puntos común para las listas de asociaciones.
assoc-multi-key
sigue sin especificarse.
assoc-multi-key
es buscar la primera clave en la lista de asociación. Esto debería resolver una nueva lista de asociación en la que buscamos la siguiente clave. Etcétera. Básicamente, una abreviatura para extraer valores de listas de asociaciones anidadas.
let-alist
también? Por ejemplo (let-alist '((foo . ((bar . "llama") (baz . "monkey")))) .foo.bar)
, volveremos "llama"
. ¡Supongo que escribiste let-alist
después de que se hizo la pregunta, pero está en el espíritu de la pregunta y vale la pena mencionar a IMO!
assoc-multi-key
. Presumiblemente busca coincidencias con sus dos primeros argumentos, pero eso es realmente todo lo que uno podría suponer, por lo que ha dicho. Y claramente no puede aceptar más de dos claves, ya que el argumento alist (presumiblementex
) es el último, no el primero, lo que sugiere que no es demasiado útil en general. Intenta especificar lo que estás buscando.