            (recur (f val (-nth cicoll n)) (inc n))
            val))))
 
-(declare hash-coll cons)
+(declare hash-coll cons pr-str)
 
 (deftype IndexedSeq [a i]
+  Object
+  (toString [this]
+    (pr-str this))
+  
   ISeqable
   (-seq [this] this)
   ISeq

  (-seq [coll] coll))

(deftype PersistentQueue [meta count front rear]
  IWithMeta
  (-with-meta [coll meta] (PersistentQueue. meta count front rear))


  (reduce conj () (reverse items)))

(deftype Cons [meta first rest]
  Object
  (toString [this]
    (pr-str this))

  IWithMeta
  (-with-meta [coll meta] (Cons. meta first rest))

