(let ((div2 (lambda (n) (n (lambda (x) (x (lambda (so-far odd?) (odd? ;; lambda (p) here and after is inlined cons (lambda (p) (p ;; Inlined successor (lambda (f x) (f (so-far f x))) nil)) ;; cons so-far t (lambda (p) (p so-far t)))))) (lambda (p) (p 0 nil))))) (fixpoint-combinator #+nil (lambda (g) (let ((inner (lambda (x) (g (x x))))) (inner inner))) (lambda (f) (let ((inner (lambda (x) (f (lambda (y) (x x y)))))) (inner inner)))) (hailstone (fixpoint-combinator (lambda (recur n) ((div2 n) (lambda (half n-odd?) (half (lambda (x) ;; lambda (p) is inlined cons (lambda (p) (p n (recur (n-odd? (lambda (f x) ;; (succ (mult 3 n)) (f (3 (n f) x))) half))))) ;; lambda (p) is inlined cons (lambda (p) (p 1 nil))))))))) hailstone)