Consider the code at the end of this post. un-commenting f-scope reveals the compiler error: ;;; ERROR: unbound lexical # But without it the globalified versoin f-scope2 comiles just fine indicating an error in the compiler. Regards Stefan (define-syntax-rule ( (c) code ...) (lambda (a b cc d c) code ...)) (define-syntax .. (syntax-rules () ((.. (f a ...)) (f x y z a ...)) ((.. (s ...) (f a ...)) (f x y z a ...)))) #; (define (f-scope f) (define (g f x3) (define (h x2 n m) (lambda xx (apply (f-skip n m) x2))) ( (c) (.. (c2) (f c)) (let ((n N) (m M)) (.. ((h x3 n m) c2))))) (lambda x (apply (g f x) x))) (define (h x2 n m) (lambda xx (apply (f-skip n m) x2))) (define (g f x3) ( (c) (.. (c2) (f c)) (let ((n N) (m M)) (.. ((h x3 n m) c2))))) (define (f-scope2 f) (lambda x (apply (g f x) x)))