Skip to content

Instantly share code, notes, and snippets.

@fuadsaud
Last active August 29, 2015 14:17
Show Gist options
  • Save fuadsaud/84526822827b945e147e to your computer and use it in GitHub Desktop.
Save fuadsaud/84526822827b945e147e to your computer and use it in GitHub Desktop.
fuad.im/FUNctional Programming
(defn make-composed-comparison [& comparisons]
(fn [p1 p2]
(let [results (for [comparison comparisons] (comparison p1 p2))
first-non-zero-result
(some (fn [result] (if (not (= 0 result)) result nil)) results)]
(if (nil? first-non-zero-result)
0
first-non-zero-result))))
(defn make-composed-comparison [& comparisons]
(fn [p1 p2]
(let [results ((apply juxt comparisons) p1 p2)
first-non-zero-result
(some (fn [result] (if (not (= 0 result)) result nil)) results)]
(if (nil? first-non-zero-result)
0
first-non-zero-result))))
(defn make-composed-comparison [& comparisons]
(fn [p1 p2]
(let [comparison-results ((apply juxt comparisons) p1 p2)]
(or
(some #(when (nonzero? %) %) comparison-results)
0))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment