Skip to content

Instantly share code, notes, and snippets.

@augustl
Last active August 29, 2015 14:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save augustl/518abd83173444747cd2 to your computer and use it in GitHub Desktop.
Save augustl/518abd83173444747cd2 to your computer and use it in GitHub Desktop.
(defn comp-decision [^Boolean truthyness fns]
(fn [initial-ctx]
(reduce
(fn [ctx decision-fn]
(let [decision (decision-fn ctx)
result (if (vector? decision) (first decision) decision)
context-update (if (vector? decision) (second decision) decision)]
(if (= truthyness (boolean result))
(liberator.core/update-context ctx context-update)
(reduced decision))))
initial-ctx
fns)))
(defn comp-pos-decision [& fns]
(comp-decision true fns))
(defn comp-neg-decision [& fns]
(comp-decision false fns))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment