(let ((a 5)) (let ((fun (lambda (x) (max x a)))) (let ((a 10) (x 20) ) (fun 1) ) ) ) ;((lambda (formals) (body)) values_for_formals) ;((lambda (x)  (+ x x)) 4)  ===>  8 ((lambda (a) ((lambda (fun) ((lambda (a x) ;formals (fun 1) ;body ) 10 20 ;values for (a x) )) (lambda (x) (max x a)) ;value for fun ) ) 5 ;value for a ) ;The scope of let DOES NOT include its arguments. (let ((a 1) (b 2)) (let ((b 3) (c (+ a b))) (let ((b 5)) (cons a (cons b (cons c '()))) ) ) ) ;The scope of letrec DOES include its arguments. (let ((a 1) (b 2)) (letrec ((b 3) (c (+ a b))) (let ((b 5)) (cons a (cons b (cons c '()))) ) ) ) ((lambda (a b) ((lambda (b c) ((lambda (b) (cons a (cons b (cons c '()))) ) 5 )) 3 (+ a b) )) 1 2 )