juxt?

user=> (map (juxt zero? even?) (range 5))
([true true] [false false] [false true] [false false] [false true])

user=> (map (apply juxt [zero? even?]) (range 5))
([true true] [false false] [false true] [false false] [false true])


On Monday, November 17, 2014 8:25:07 PM UTC-8, Andy L wrote:
>
> Hi,
>
> This is another puzzle/exercise based on a very practical need. I could 
> not find a built in function, hoping something like "colfn" already exists. 
> Otherwise I wonder about an idiomatic solution. This is self-explanatory 
> code:
>
> user=> (require '[clojure.algo.generic.functor :as fu])
> user=> (require '[me.raynes.fs :as fs])
>
> user=> (defn colfn[col] (fn [a] (fu/fmap #(% a) col)))
>
> user=> (map (colfn [fs/directory?,identity]) (filter fs/directory?(set 
> (fs/list-dir "."))))
> ([true "src"] [true "target"] [true ".git"])
>
> user=> (map (colfn {:is-dir fs/directory?, :dir identity}) (filter 
> fs/directory?(set (fs/list-dir "."))))
> ({:is-dir true, :dir "src"} {:is-dir true, :dir "target"} {:is-dir true, 
> :dir ".git"})
>
>
> My question is, if something like colfn already exists? The idea is to 
> generate a function of a sequence (vector, list, map) of functions which 
> would used in e.g. map.
>
> Best,
> Andy
>
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to