#!/usr/local/bin/guile -s
!#

;;; $Id: wc.guile,v 1.7 2001/08/20 00:29:13 doug Exp $
;;; http://www.bagley.org/~doug/shootout/
;;; from Dale P. Smith

(define (wc iport)
  (let ((chars 0) (words 0) (lines 0) (inword 0) (x #f))
    (let loop ()
      (set! x (read-char iport))
      (if (eof-object? x)
      (begin (display lines) (display " ") (display words)
         (display " ") (display chars) (newline))
      (begin
        (set! chars (+ 1 chars))
        (if (not (char-whitespace? x))
        (set! inword 1)
        (begin
          (set! words (+ words inword))
          (set! inword 0)
          (if (char=? x #\newline)
              (set! lines (+ 1 lines)))))
        (loop))))))

(wc (current-input-port))