Data una mappa con la chiave: contenuto, dove il contenuto è un elenco di stringhe o altre mappe, come posso appiattire i valori per ricevere solo le stringhe?Clojure - Appiattisci ricorsivamente mappe nidificate
(flattener {:content '("b" {:content ("c" {:content ("d")})} "e")})
> '("b" "c" "d" "e")
I'm inciampare attraverso loop molto hacky si ripetono tentativi e ora il mio cervello è bruciato. C'è un bel modo idiomatico per farlo in Clojure?
Grazie.
Quello che ho è inferiore, e anche se funziona, è abbastanza brutto
(defn flatten-content
[coll]
(loop [acc '(), l coll]
(let [fst (first l), rst (rest l)]
(cond
(empty? l) (reverse acc)
(seq? fst) (recur acc (concat fst rst))
(associative? fst) (recur acc (concat (:content fst) rst))
:else (recur (conj acc fst) rst)))))
piuttosto difficile da battere che per l'eleganza. Grazie. – Scott