Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
(defn first-truthy-fn
"Returns the first function in a seq of functions
that evaluates to truthy for the given arguments"
[all-preds & args]
(loop [[p & more-ps] all-preds]
(when p
(if (apply p args) p (recur more-ps)))))
;; filter version that fails to be lazy:
(defn first-truthy-fn [preds & args]
(first (filter #(apply % args) preds)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment