; Getting rid of empty let - a small step... (let ((g (lambda (h) ; g is our factorial form (lambda (n) (if (= n 0) 1 (* n (h (- n 1)))))))) (let ((i (lambda (f) ; here is the bookkeeping stuff (lambda (n) ((g (f f)) n) )))) ; HERE g IS BOUND TO MEANING AT OUTER LEVEL ((i i) 5))) ; PASS IT VIA A PARAMETER INSTEAD