%begin scheme% (define (for-each-line-in-file filename proc . mode) (with-input-from-file filename (lambda () (apply for-each-line proc (current-input-port) mode)))) (define (for-each-line proc . port+mode) (let while () (let ((line (apply read-line port+mode))) (unless (eof-object? line) (proc line) (while)))))
%begin scheme%
(define (for-each-line-in-file filename proc . mode)
(with-input-from-file
filename
(lambda () (apply for-each-line proc (current-input-port) mode))))
(define (for-each-line proc . port+mode)
(let while ()
(let ((line (apply read-line port+mode)))
(unless (eof-object? line)
(proc line)
(while)))))
%end%
%begin scheme% (for-each-line-in-file "ReadingLines.scm" (let ((line-num 0)) (lambda (line) (printf "~a: ~a ~n" line-num line) (set! line-num (add1 line-num)))))
%begin scheme% (define (fold-lines-in-file filename proc init . mode) (with-input-from-file filename (lambda () (apply fold-lines proc init (current-input-port) mode)))) (define (fold-lines proc init . port+mode) (let while ((accum init)) (let ((line (apply read-line port+mode))) (if (eof-object? line) accum (while (proc line accum))))))
%begin scheme% (fold-lines-in-file "ReadingLinesWithFold.scm" (lambda (line line-num) (printf "~a: ~a ~n" line-num line) (add1 line-num)) 1)