| function | since v0.0-1236 |  clojure.core.reducers/monoid | Edit | 
(monoid op ctor)Builds a combining fn out of the supplied operator and identity constructor. op must be associative and ctor called with no args must return an identity value for it.
(defn monoid
  [op ctor]
  (fn m
    ([] (ctor))
    ([a b] (op a b))))