     (PersistentArrayMap. (hamt/remove k h)))
 
   IFn
-  ; TODO multiple arity protocols
   (-invoke [coll k]
     (-lookup coll k))
 

(defprotocol IDeref
  (-deref  [o]))

; TODO: multiple dispatch for protocols
; (defprotocol ISwap
;     (-swap!  [o f]  [o f a]  [o f a b]  [o f a b xs]))

(defprotocol ISwap
  (-swap!  [o f & xs]))

(defprotocol IEquiv
  (-equiv [x other]))

  (-peek [coll])
  (-pop [coll]))

(defprotocol IReduce
  (-reduce [coll f] [coll f start]))

(defprotocol IPrintable
  (-pr-str [o]))
