que sigo este ejemplo: http://groups.google.com/group/clojure/browse_thread/thread/99b3d792b1d34b56clojure mapa Filtrar por teclas
(ver la última respuesta)
y este es el error críptico que me sale:
Clojure 1.2.1
user=> (def m {:a "x" :b "y" :c "z" :d "w"})
#'user/m
user=> (filter #(some % [:a :b]) m)
java.lang.IllegalArgumentException: Key must be integer
(user=>
También me Don No entiendo por qué esto funcionaría. ¿No (algunos ...) devolverá el primer valor coincidente, "x", cada vez? Soy un novato total en Clojure y solo trato de aprender.
Por favor aclararme.
El código del subproceso ggroup al que enlaza soluciona un problema diferente: "dado * una colección de * mapas y un conjunto de claves, devuelva una colección de precisamente aquellos de los mapas dados que contienen al menos una de las claves dadas ". Por lo tanto, en este código, 'filter' está destinado a operar en una colección de mapas, no en un solo mapa; y este particular '' (...) 'bloque que involucra' algunos' solo es apropiado si los mapas dados no contienen valores 'nil' o' false' (como se menciona en el hilo), pero en cualquier caso, la función los retornos se aplicarán (perezosamente) a cada uno de los mapas dados por turno. –
bien eso explica mi malentendido, gracias. – Kevin