Takes any nested combination of sequential things (lists, vectors,
etc.) and returns their contents as a single, flat sequence.
(flatten nil) returns nil.
user=> (flatten [1 [2 3]])
(1 2 3)
user=> (flatten '(1 2 3))
(1 2 3)
user=> (flatten '(1 2 [3 (4 5)]))
(1 2 3 4 5)
user=> (flatten nil)
()
; Attention with stuff which is not a sequence
user=> (flatten 5)
()
user=> (flatten {:name "Hubert" :age 23})
()
; Workaround for maps
user=> (flatten (seq {:name "Hubert" :age 23}))
(:name "Hubert" :age 23)
(defn flatten
"Takes any nested combination of sequential things (lists, vectors,
etc.) and returns their contents as a single, flat sequence.
(flatten nil) returns nil."
{:added "1.2"}
[x]
(filter (complement sequential?)
(rest (tree-seq sequential? seq x))))
Comments top
No comments for flatten. Log in to add a comment.