(let ((a 1)) (define (f x) (define b (+ a x)) (define a 5) (+ a b)) (f 10)) Error: (+) bad argument type: # Call history: (##core#begin (##core#set! f (##core#lambda (x) (define b (+ a x)) (define a 5) (+ a b))) (f 10)) (##core#set! f (##core#lambda (x) (define b (+ a x)) (define a 5) (+ a b))) (##core#lambda (x) (define b (+ a x)) (define a 5) (+ a b)) [f] (##core#let ((b (##core#undefined)) (a (##core#undefined))) (##core#set! b (+ a x)) (##core#set! a 5... [f] (##core#begin (##core#set! b (+ a x)) (##core#set! a 5) (+ a b)) [f] (##core#set! b (+ a x)) [f] (+ a x) [f] (##core#set! a 5) [f] (##core#begin (+ a b)) [f] (+ a b) [f] (##core#undefined) [f] (##core#undefined) (f 10) (##core#undefined) (f 10) [f] (+ a x) <-- ;;; "Same" code, but with prints (let ((a 1)) (define (f x) (define b (+ a x)) (print "b=" b) (define a 5) (print "a=" a) (+ a b)) (f 10)) b=11 a=5 16