(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) ) )))) )))