;;; DIVREC -- Benchmark which divides by 2 using lists of n ()'s.
 
(library (rnrs-benchmarks divrec)
  (export main)
  (import (rnrs) (rnrs-benchmarks))
  
  (define (create-n n)
    (do ((n n (- n 1))
         (a '() (cons '() a)))
        ((= n 0) a)))
   
  (define *ll* (create-n 200))
  
  (define (recursive-div2 l)
    (cond ((null? l) '())
          (else (cons (car l) (recursive-div2 (cddr l))))))
    
  (define (main . args)
    (run-benchmark
      "divrec"
      divrec-iters
      (lambda (result)
        (equal? result
                '(() () () () () () () () () () () () () () () () () () () ()
                  () () () () () () () () () () () () () () () () () () () ()
                  () () () () () () () () () () () () () () () () () () () ()
                  () () () () () () () () () () () () () () () () () () () ()
                  () () () () () () () () () () () () () () () () () () () ())))
      (lambda (l) (lambda () (recursive-div2 l)))
      *ll*)))