 (defn cons
   "Returns a new seq where x is the first element and seq is the rest."
   [first rest]
-  (new Cons nil first rest))
+  (Cons. nil first rest))
 
 ; should use: count, nth
 (defn- vector-seq [vector i]

  ICounted
  (-count [coll] 0))

(set! cljs.core.List.EMPTY (new EmptyList nil))

(defn list [& items]
  ; when we have reduce: (reduce conj () (reverse items))

  (-pop [coll] #_(throw "Can't pop empty list"))

  ICollection
  (-conj [coll o] (List. meta o nil 1))

; IEmptyableCollection
; (iempty [coll] coll)
