Hi,

Am 09.05.2009 um 13:06 schrieb Mark Reid:

; ---- Begin lazyread.clj ----
(import '(java.io FileReader BufferedReader PrintWriter))

(def filename "test.data")

; Write out a small test file. Numbers 0 to 99, one per line.
(with-open [data (PrintWriter. filename)]
 (dotimes [i 100] (.println data i)))

; An attempt at capturing the general idiom that doesn't work
(defn cons-while
 [pred f]
 (lazy-seq
   (when pred
     (cons f (cons-while pred f)))))
; ---- End lazyread.clj ----

There is a mistake in this function: pred should be (pred)
as well as f should be (f).
Furthermore I would call it repeatedly-while.

(defn repeatedly-while
  [pref f]
  (lazy-seq
    (when (pred)
      (cons (f) (cons-while pred f)))))

Then this should work:

(repeatedly-while #(.ready reader) #(.readLine reader))

I didn't test it, though.

Sincerely
Meikel

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to