Mapcat and Filter
The Clojure function mapcat ( mapcan in Lisp) works much like map ( mapcar in Lisp), but with a different way of gathering results:
A function related to mapcat is filter, Which returns a list of only those items that satisfy a predicate.
(defn filtr [predicate lst]
(mapcat (fn [item]
(if (predicate item)
(list item) ))
lst) )
>(filter number? '(a 2 or 3 and 7))
; ()(2)()(3)() (7)
(2 3 7)
>(filter symbol? '(a 2 or 3 and 7))
; (a)()(or)()(and)()
(A OR AND)