{"size": 742, "ext": "rktl", "max_stars_repo_path": "pkgs/racket-benchmarks/tests/racket/benchmarks/shootout/typed/wc.rktl", "max_stars_repo_name": "lkh01/racket", "max_stars_repo_stars_event_min_datetime": "2018-07-05T21:18:24.000Z", "max_stars_repo_stars_event_max_datetime": "2021-06-04T14:48:37.000Z", "max_issues_repo_path": "pkgs/racket-benchmarks/tests/racket/benchmarks/shootout/typed/wc.rktl", "max_issues_repo_name": "lkh01/racket", "max_issues_repo_issues_event_min_datetime": "2017-05-10T07:33:20.000Z", "max_issues_repo_issues_event_max_datetime": "2018-07-19T15:49:46.000Z", "max_forks_repo_path": "pkgs/racket-benchmarks/tests/racket/benchmarks/shootout/typed/wc.rktl", "max_forks_repo_name": "lkh01/racket", "max_forks_repo_forks_event_min_datetime": "2016-04-25T11:47:57.000Z", "max_forks_repo_forks_event_max_datetime": "2017-05-09T14:52:48.000Z"}
{"max_stars_count": 4, "max_issues_count": 9, "max_forks_count": 3, "avg_line_length": 32.2608695652, "max_line_length": 79, "alphanum_fraction": 0.4380053908}
;
;  Faster, more idiomatic Scheme by Neil Van Dyke
;

(: main (Input-Port -> Void))
(define (main iport)
  (apply printf "~s ~s ~s\n"
         (let: wc : (Listof Natural)
               ((i : Boolean #f)
                (lines : Natural 0)
                (words : Natural 0)
                (chars : Natural 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))
