With all due respect, I disagree. Like Jens, I consider the (define u ..) nested and scoped inside the first cond branch.
On Jun 8, 2012, at 11:56 AM, Sam Tobin-Hochstadt wrote: > On Fri, Jun 8, 2012 at 11:42 AM, Jens Axel Søgaard > <[email protected]> wrote: >> >> When >> >> (let ([x 1]) >> (cond >> [(= x 1) >> (define u 2) >> (+ u 1)] >> [else u])) >> >> is pasted into the interaction window, I get 3 ! >> >> I was expecting an error. > > This is the same behavior as: > > -> (if #f x 1) > 1 > > What's happening is that `#%top` behaves differently at the REPL than > in a module. This enables you to write: > > -> (define (even? x) (or (zero? x) (odd? (sub1 x)))) > -> (define (odd? x) (or (= x 1) (even? (sub1 x)))) > > without getting an error when entering the first line. > -- > sam th > [email protected] > > ____________________ > Racket Users list: > http://lists.racket-lang.org/users ____________________ Racket Users list: http://lists.racket-lang.org/users

