(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)))
(unless (eof-object? line)
(while (proc line accum))))))