 (set! cljs.core.List.EMPTY (EmptyList. nil))
 
 (defn list [& items]
-  ; when we have reduce: (reduce conj () (reverse items))
-  (reverse (reverse items)))
+  (reduce conj () (reverse items)))
 
 (deftype Cons [meta first rest]
   IWithMeta

     (let [s (seq coll)]
       (-reduce s f val))))

(defn reverse
  "Returns a seq of the items in coll in reverse order. Not lazy."
  [coll]
  ; when we have reduce: (reduce conj () coll)
  (loop [in coll, out ()]
    (if (seq in)
      (recur (rest in) (conj out (first in)))
      out)))

(defn- array-clone [array-like]
  #_(goog.array.clone array-like)

(set! cljs.core.Vector.EMPTY (Vector. nil (array)))

(defn vec [coll]
  (reduce conj [] coll))

(defn vector [& args] (vec args))

