I know that the -> form can be used to pass the results of one function result to another:
->
(f1 (f2 (f3 x))) (-> x f3 f2 f1) ; equivalent
You can do this with a plain old reduce:
reduce
(defn pipe [x fs] (reduce (fn [acc f] (f acc)) x fs))
That can be shortened to:
(defn pipe [x fs] (reduce #(%2 %1) x fs))
Used like this:
user> (pipe [1 2 3] [#(conj % 77) rest reverse (partial map inc) vec]) [78 4 3]