     (if (satisfies? ICounted coll)
       (-count coll)
       (loop [s (seq coll) n 0]
-	(if (first s)
-	  (recur (rest s) (inc n))
+	(if s
+	  (recur (next s) (inc n))
 	  n)))
     0))
 

  [to from]
  (reduce -conj to from))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Printing ;;;;;;;;;;;;;;;;

(defn pr-sequential [print-one begin sep end opts coll]


(defn js-obj []
  (js* "return {}"))

(defn js-keys [obj]
  (let [keys (array)]
    (goog.object/forEach obj (fn [_ key _] (.push keys key)))
    keys))

(defn js-delete [obj key]
  (js* "delete ~{obj}[~{key}]"))
