;; do some allocation in the loop (datatype bool (:true) (:false)) (define (- a b) (%%cexp (int int -> int) "%0-%1" a b)) (define (= a b) (%%cexp (int int -> bool) "%0==%1" a b)) (define (zero? x) (%%cexp (int -> bool) "%0==0" x)) (let loop ((n 1000000) (z {thing=0 blorb=#f}) (y (:blort 12))) (if (zero? n) z (loop (- n 1) {thing=n blorb=#f} (:blort n))))