# [plt-scheme] Newbie Schemer question

>* I would like to execute a function that has one of its variable
*>* defined
*>* outside this function, in an upper context. Suppose that I define a
*>* simple
*>* function such as:
*>*
*>* (define (f n)
*>* (+ *p* n))
*>*
*>* I would like to write something like that (the following syntax is
*>* incorrect):
*>*
*>* ((let ((*p* 1))
*>* (lambda ()
*>* (f 2)))
*>*
*>* How should I formulate this in Scheme?
*
Right, your suggestion won't work because the *p* introduced by the
let-binding is not in scope where f is defined.
How about:
(define f
(let ([*p* 1])
(lambda (n)
(+ *p* n))))
Since *p* is fixed, you could just inline its value:
(define (f n)
(+ 1 n))
which is more idiomatically written as
(define f add1)
-- Paul