[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: where define is legal
In article <8904201554.AA13117@spt.entity.com> alms@spt.entity.COM (andrew lm shalit) writes:
>(define (foo bool)
> (if bool
> (define (result) #true)
> (define (result) #false))
> (result))
From the R^3S: Section 5.2
"Definitions are valid in some, but not all, contexts where
expressions are allowed. They are valid only at the top level of
a <program> and, in some implementations, at the beginning of
a <body>.
Section 5.2.1 describes top level definitions, and section 5.2.2 describes
internal definitions.
The above code can be rewritten as:
(define result nil) ; dummy value for the variable result.
(define (foo bool)
(if bool
(set! result (lambda () #true))
(set! result (lambda () #false)))
(result))
You can use a local variable for result if you want.
John
gateley@tilde.csc.ti.com
p.s. Hi Eric.