Every so often I find myself wanting to apply a collection of functions on several collections of parameters. It\'s easy to do with map and a very simple function.
Another approach which is fairly self explanatory: "for each nth function, apply it to all nth elements of the vectors":
(defn my-juxt [fun-vec & val-vecs] (for [n (range 0 (count fun-vec))] (apply (fun-vec n) (map #(nth % n) val-vecs)))) user> (my-juxt [- + *] [1 2 3] [1 2 3] [1 2 3]) (-1 6 27)