;;; CAT -- One of the Kernighan and Van Wyk benchmarks.

(library (r6rs-benchmarks cat)
  (export main)
  (import (r6rs) (r6rs-benchmarks))
  
  (define inport #f)
  (define outport #f)
  
  (define (catport port)
    (let ((x (read-char port)))
      (if (eof-object? x)
          (close-output-port outport)
          (begin
            (write-char x outport)
            (catport port)))))
  
  (define (go)
    (set! inport (open-input-file "bib"))
    (set! outport (open-output-file "foo"))
    (catport inport)
    (close-input-port inport))
  
  (define (main . args)
    (run-benchmark
     "cat"
     cat-iters
     (lambda (result) #t)
     (lambda () (lambda () (go))))))