;;; 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*)))