Skip to content

Instantly share code, notes, and snippets.

@jcromartie
Created October 12, 2011 16:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jcromartie/1281781 to your computer and use it in GitHub Desktop.
Save jcromartie/1281781 to your computer and use it in GitHub Desktop.
Lazy seq of forms
(import '(java.io BufferedWriter FileWriter
PushbackReader BufferedReader FileReader))
(defn form-seq
"Return lazy seq of forms in file at path. Closes reader only after
all forms are read."
[path]
(let [reader (-> path FileReader. BufferedReader. PushbackReader.)
eof (Object.)
next-form (fn next-form []
(let [form (read reader false eof)]
(if (= eof form)
(do
(.close reader)
nil)
(cons form (lazy-seq (next-form))))))]
(next-form)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment