Thank you for your answer. But it is still not clear. > (let ([x 'uuu]) > (define x 'a) > x)
This: 1. creates a binding [x => 'uuu] 2. creates a different binding [x => 'a] that shadows the existing binding of x 3. gives the value of the *visible* binding of x, namely 'a The two binding [x => 'uuu] and [x =>'a] are exactly in the same lexical space (the second binding is not in a lexical subspace) and that doesn't make sense for me. As far as I know, to shadow a binding, you have to create a lexical subspace. Am I wrong ? -----Message d'origine----- De : Jon Zeppieri [mailto:[email protected]] Envoyé : 15 septembre 2013 11:20 À : Andre Mayers Cc : [email protected] Objet : Re: [racket] Why is x can be simultenaously bind and not bind ? On Sun, Sep 15, 2013 at 9:26 AM, Andre Mayers <[email protected]> wrote: > Another way to ask the question is why is it possible to execute > (let ([x 'uuu]) > (set! x 'a) > x) > This: 1. creates a binding [x => 'uuu] 2. changes that same binding to [x => 'a] 3. gives the value of that binding > and > > (let ([x 'uuu]) > (define x 'a) > x) This: 1. creates a binding [x => 'uuu] 2. creates a different binding [x => 'a] that shadows the existing binding of x 3. gives the value of the *visible* binding of x, namely 'a ____________________ Racket Users list: http://lists.racket-lang.org/users

