This Web
Other Webs
Schematics
Scheme Links
(define (countlines filename) (call-with-input-file filename (lambda (p) (let loop ((line (read-line p)) (result 0)) (if (eof-object? line) result (loop (read-line p) (+ 1 result)))))))
fold-file-lines
(define (fold-file-lines filename knil kons) (call-with-input-file filename (lambda (p) (let loop ((line (read-line p)) (result knil)) (if (eof-object? line) result (loop (read-line p) (kons line result)))))))
countlines
readlines
(define (countlines fname) (fold-file-lines fname 0 (lambda (line result) (+ 1 result)))) (define (readlines fname) (reverse (fold-file-lines fname '() cons)))
(define count-lines (let ([re (regexp ".*?((\n\r)|(\r\n)|\n|\r|$)")]) ; *? shortest possible (lambda (filename) (call-with-input-file filename (lambda (in) (let loop ([l 0]) (cond [(eof-object? (peek-char in)) l] [(regexp-match re in) (loop (+ l 1))] [else (loop l)])))))))