             (do (vswap! seen conj input)
                 (rf result input))))))))
   ([coll]
-   (throw "unimplemented destructuring")
-   #_(let [step (fn step [xs seen]
+   (let [step (fn step [xs seen]
                 (lazy-seq
                   ((fn [[f :as xs] seen]
                      (when-let [s (seq xs)]

     (walk root)))

(defn file-seq
  "A tree seq on java.io.Files"
  {:added "1.0"
   :static true}
  [dir]
  (throw "unimplemented")
  #_(tree-seq
   (fn [^java.io.File f] (. f (isDirectory)))
   (fn [^java.io.File d] (seq (. d (listFiles))))
   dir))

(defn xml-seq

          (let ~lets
            ~@body))))))

;;redefine fn with destructuring and pre/post conditions


(defmacro fn
