   ;; TODO: IKVReduce, etc.
 
   IFn
-  ;; TODO: multiple arity protocols
   (-invoke [coll k]
     (-nth coll k))
 

                      s)))]
       (step pred coll))))

;; TODO: implement.
(defn seq
  "Returns a seq on the collection. If the collection is
  empty, returns nil.  (seq nil) returns nil. seq also works on

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

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

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