   ([x] (cast Number x))
   ([x y] (add'* x y))
   ([x y & more]
-   (reduce1 +' (+' x y) more)))
+   (reduce +' (+' x y) more)))
 
 (defn +
   "Returns the sum of nums. (+) returns 0. Does not auto-promote

      (let [vs (take-nth 2 (drop 1 bindings))
            bs (take-nth 2 bindings)
            gs (map (fn [b] (if (symbol? b) b (gensym))) bs)
            bfs (reduce1 (fn [ret [b v g]]
                           (if (symbol? b)
                             (conj ret g v)
                             (conj ret g v b g)))

  "Returns a seq of the items in coll in reverse order. Not lazy."
  {:added "1.0"}
  [coll]
  (reduce conj () coll))

(defn +'
  "Returns the sum of nums. (+) returns 0. Supports arbitrary precision.
