(define (>= a b) (%%cexp (int int -> bool) "%0>=%1" a b)) (define (- a b) (%%cexp (int int -> int) "%0-%1" a b)) (define (zero? a) (%%cexp (int -> bool) "%0==0" a)) (define (tak x y z) (if (>= y x) z (tak (tak (- x 1) y z) (tak (- y 1) z x) (tak (- z 1) x y)))) (let loop ((n 20)) (let ((r (tak 18 12 6))) (if (zero? n) r (loop (- n 1)))))