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