Next: Takl, Previous: Tak, Up: Benchmark Sources [Contents][Index]
;;;; A version of the TAK function that uses continuations
(define (ctak x y z)
(call-with-current-continuation
(lambda (k)
(ctak-aux k x y z))))
(define (ctak-aux k x y z)
(cond ((not (< y x)) (k z))
(else (call-with-current-continuation
(ctak-aux
k
(call-with-current-continuation
(lambda (k) (ctak-aux k (- x 1) y z)))
(call-with-current-continuation
(lambda (k) (ctak-aux k (- y 1) z x)))
(call-with-current-continuation
(lambda (k) (ctak-aux k (- z 1) x y))))))))
(define (id x) x)
(define (mb-test r x y z)
(if (zero? r)
(ctak x y z)
(id (mb-test (- r 1) x y z))))
;;; call: (ctak 18 12 6)