   (-reduce [coll f] (seq-reduce f coll))
   (-reduce [coll f start] (seq-reduce f start coll)))
 
+(defn ^boolean list?
+  "Returns true if x implements IList"
+  [x]
+  (satisfies? IList x))
+
 (es6-iterable List)
 
 (deftype EmptyList [meta]


  ISequential
  IEquiv
  (-equiv [coll other] (equiv-sequential coll other))

  IHash
  (-hash [coll] empty-ordered-hash)

          (implements? ISeq coll))
    (Cons. nil x coll nil)
    (Cons. nil x (seq coll) nil)))

(defn hash-keyword [k]
  (int (+ (hash-symbol k) 0x9e3779b9)))
