[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[ShootOut]wc.scm
#!/usr/bin/mzscheme -r
(define (main iport)
(define (wc chars inword words lines)
(let* ([x (read-char iport)]
[incline (lambda () (if (char=? x #\newline) (+ lines 1) lines))]
[incword (lambda () (+ words inword))])
(if (eof-object? x)
(printf "~a ~a ~a~n" lines words chars)
(if (char-whitespace? x)
(wc (+ chars 1) 0 (incword) (incline))
(wc (+ chars 1) 1 words (incline))))))
(wc 0 0 0 0))
(main (current-input-port))