reduce

functionsince v0.0-927 clojure.core/reduceEdit
(reduce f coll)
(reduce f val coll)

Details:

f should be a function of 2 arguments. If val 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.

If coll contains no items, f must accept no arguments as well, and reduce returns the result of calling f with no arguments.

If coll has only 1 item, it is returned and f is not called.

If val is supplied, returns the result of applying f to val and the first item in coll, then applying f to that result and the 2nd item, etc.

If coll contains no items, returns val and f is not called.


See Also:


Source docstring:
f should be a function of 2 arguments. If val 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. If coll contains no
items, f must accept no arguments as well, and reduce returns the
result of calling f with no arguments.  If coll has only 1 item, it
is returned and f is not called.  If val is supplied, returns the
result of applying f to val and the first item in coll, then
applying f to that result and the 2nd item, etc. If coll contains no
items, returns val and f is not called.
Source code @ clojurescript:src/main/cljs/cljs/core.cljs
(defn reduce
  ([f coll]
     (cond
       (implements? IReduce coll)
       (-reduce coll f)

       (array? coll)
       (array-reduce coll f)

       (string? coll)
       (array-reduce coll f)

       (native-satisfies? IReduce coll)
       (-reduce coll f)

       (iterable? coll)
       (iter-reduce coll f)

       :else
       (seq-reduce f coll)))
  ([f val coll]
     (cond
       (implements? IReduce coll)
       (-reduce coll f val)

       (array? coll)
       (array-reduce coll f val)

       (string? coll)
       (array-reduce coll f val)

       (native-satisfies? IReduce coll)
       (-reduce coll f val)

       (iterable? coll)
       (iter-reduce coll f val)

       :else
       (seq-reduce f val coll))))