(define factorial (make-primitive-recursive * 1)) (define (make-add-select predicate) (make-primitive-recursive (lambda (x y) (if (predicate x) (+ x y) y)) 0)) (define add-odd (make-add-select odd?)) (define add-odd-iterative (recursive->iterative add-odd)) (define fib (make-two-recursive (lambda (x y z) (+ y z)) 0 1)) (define fib-iterative (two-recursive->iterative fib))