"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]
(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)))