   (-reduce [v f]
     (ci-reduce array f))
   (-reduce [v f start]
-    (ci-reduce array start))
-  )
+           (ci-reduce array start))
+
+  IKeyed
+  (-contains? [coll n]
+     (and (>= n 0)
+          (< n (.length array)))))
 
 (set! cljs.core.Vector/EMPTY (Vector. nil (array)))
 

  #_(-assoc-ex [coll k v])
  (-dissoc [coll k]))

(defprotocol ISet
  (-contains? [coll v])
  (-disjoin [coll v]))

(defprotocol IStack
  (-peek [coll])

      v
      not-found))

  IKeyed
  (-contains? [coll v]
    (-contains-key? hash-map v))
  
  ISet
  (-disjoin [coll v]
    (Set. meta (dissoc hash-map v)))

