Category theory concepts in Clojure - Functors, Applicatives, Monads, Monoids and more.