; ; Faster, more idiomatic Scheme by Neil Van Dyke ; (module wc mzscheme (define (main iport) (apply printf "~s ~s ~s\n" (let wc ((i #f) (lines 0) (words 0) (chars 0)) (let ((x (read-char iport))) (if (eof-object? x) (list lines words chars) (case x ((#\newline) (wc #f (add1 lines) words (add1 chars))) ((#\space #\tab) (wc #f lines words (add1 chars))) (else (wc #t lines (if i words (add1 words)) (add1 chars))))))))) (main (current-input-port)))