IReduce

protocolsince v0.0-927 clojure.lang/IReduceEdit
implemented for ArrayChunk ArrayNodeSeq BlackNode ChunkedSeq Cons Cycle Eduction EmptyList IndexedSeq IntegerRange Iterate KeySeq LazySeq List MapEntry NodeSeq PersistentArrayMap PersistentArrayMapSeq PersistentTreeMapSeq PersistentVector RSeq Range RedNode Repeat Subvec ValSeq

Source docstring:
Protocol for seq types that can reduce themselves.
  Called by cljs.core/reduce.
Source code @ clojurescript:src/main/cljs/cljs/core.cljs
(defprotocol IReduce
  (-reduce [coll f] [coll f start]
    "f should be a function of 2 arguments. If start is not supplied,
     returns the result of applying f to the first 2 items in coll, then
     applying f to that result and the 3rd item, etc."))