racket/collects/tests/mzscheme/benchmarks/shootout/wc.ss
2006-07-27 19:32:22 +00:00

19 lines
529 B
Scheme

;
; 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)))