; Just currying (lambda (f (lambda (n) ...))). Not better - perhaps even worse... (let ((fac (lambda (f) (lambda (n) (if (= n 0) 1 (* n ((f f) (- n 1)))))))) ; GET RID OF (f f) ((fac fac) 5)) ; BY ABSTRACTING IT OUT OF THE IF-FORM.