Previous: Top-Level Definitions, Up: Definitions
An internal definition is a definition that occurs at the
beginning of a body (that is, the body of a lambda
,
let
, let*
, letrec
, fluid-let
, 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))))