Skip to content

Instantly share code, notes, and snippets.

@ztellman
Created March 28, 2012 18:28
Show Gist options
  • Save ztellman/2229117 to your computer and use it in GitHub Desktop.
Save ztellman/2229117 to your computer and use it in GitHub Desktop.
(defmacro let-pipeline [decls & body]
(let [pairs (partition 2 decls)
vars (map first pairs)
exprs (map second pairs)
predecessors (map #(take % vars) (range (count vars)))]
`(let [~@(mapcat
(fn [v preds expr]
`[~v
(run-pipeline (merge-results ~@preds)
(fn [[~@preds]] ~expr))])
vars
predecessors
exprs)]
(run-pipeline (merge-results ~@vars)
(fn [[~@vars]]
~@body)))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment