En clojure, quiero agregar estos datos:En Clojure, ¿cómo agrupar elementos?
(def data [[:morning :pear][:morning :mango][:evening :mango][:evening :pear]])
(group-by first data)
;{:morning [[:morning :pear][:morning :mango]],:evening [[:evening :mango][:evening :pear]]}
Mi problema es que :evening
y :morning
son redundantes. En su lugar, me gustaría crear la colección siguiente:
([:morning (:pear :mango)] [:evening (:mango :pear)])
me ocurrió:
(for [[moment moment-fruit-vec] (group-by first data)] [moment (map second moment-fruit-vec)])
¿Hay una solución más idiomática?
El nombre de la variable en su la solución propuesta es engañosa. El valor desestructurado como 'fruta' es en realidad una secuencia de vectores de pares momento-fruta. –
¡Muchas gracias! Se actualizó la pregunta – viebel