; We wish to preserve the recusive form of factorial as much as possible. ; Therefore getting rid of (f f) in (lambda (n) ....) ; Abstracting if to get rid of (f f). (let ((fac (lambda (f) ; THE NAME fac IS NOW MISLEADNIG (lambda (n) (let ((g (lambda (h) (if (= n 0) 1 (* n (h (- n 1))))))) (g (f f))) )))) ((fac fac) 5))