buffering a line from input-stream added by klm` on Sat Feb 18 19:07:54 2012


(define (make-line-peeker i)
  (let [(q '())]
    (lambda ()
      (let loop ()
        (if (char-ready? i)
         (let [(ch (read-char i))]
           (if (eq? ch #\newline)
               (let [(ret q)]
                 (set! q '())
                 (reverse-list->string ret))
               (begin
                 (set! q (cons ch q))
                 (loop) ) )))) )))