;; direct mechanism (call-with-input-file "/etc/passwd" (lambda (port) (do ((expr (read port) (read port))) ((eof-object? expr)) (print expr)))) ;; convenience functions (define (call-with-read-lines file proc) (call-with-input-file file (lambda (port) (do ((expr (read-line port) (read-line port))) ((eof-object? expr)) (proc expr))))) (define (call-with-read file proc) (call-with-input-file file (lambda (port) (do ((expr (read port) (read port))) ((eof-object? expr)) (proc expr))))) (define (read-lines file) "alternative: file->string-list" (let1 result () (call-with-input-file file (lambda (port) ;; TODO simplu call port->sexp-list or port->string-list (do ((expr (read-line port) (read-line port))) ((eof-object? expr)) (set! result (cons expr result))))) (reverse result))) (call-with-read-lines "/etc/passwd" print)