;;; TAK -- A vanilla version of the TAKeuchi function. (library (rnrs-benchmarks tak) (export main) (import (rnrs) (rnrs-benchmarks)) (define (tak x y z) (if (not (< y x)) z (tak (tak (- x 1) y z) (tak (- y 1) z x) (tak (- z 1) x y)))) (define (main . args) (run-benchmark "tak" tak-iters (lambda (result) (equal? result 7)) (lambda (x y z) (lambda () (tak x y z))) 18 12 6)))