Previous: Top-Level Definitions, Up: Definitions [Contents][Index]
An internal definition is a definition that occurs at the
beginning of a body (that is, the body of a lambda
,
let
, let*
, letrec
, letrec*
,
let-values
, let*-values
, parameterize
, or
“procedure define
” expression), rather than at the top level
of a program. The variable defined by an internal definition is local
to the body. That is, variable is bound rather than
assigned, and the region of the binding is the entire body. For
example,
(let ((x 5)) (define foo (lambda (y) (bar x y))) (define bar (lambda (a b) (+ (* a b) a))) (foo (+ x 3))) ⇒ 45
A body containing internal definitions can always be converted
into a completely equivalent letrec*
expression. For example, the
let
expression in the above example is equivalent to
(let ((x 5)) (letrec* ((foo (lambda (y) (bar x y))) (bar (lambda (a b) (+ (* a b) a)))) (foo (+ x 3))))