[racket] constant vs. variable behavior
The DrRacket REPL allows set!s on those variables that are assignable in the module and no others. That's by design. Roughly speaking, think of the Definitions window as a module and the REPL a way to perform computations as if we were a client of the module that can also use all of its internally defined functions, think super-client. But this super-client view does not enable you to mutate variables that weren't mutable in the first place .. just like a client can't do that either.
On Oct 17, 2014, at 12:29 PM, Christian Wagenknecht <c.wagenknecht at hszg.de> wrote:
> In the example as given below 'a' behaves like a constant whereas the value named with 'x' can be modified (in the interaction window) as expected. Could you help me please to understand what happened by (set! x "Bob")?
>
> Definition window
>
> #lang racket
>
> (define a "Hello")
>
> (define x "Hello")
> (set! x "Bob")
>
> Interaction window
>
> > (set! a 3)
> . . set!: assignment disallowed;
> cannot modify a constant
> constant: a
> > (set! x 9)
> > x
> 9
>
> ____________________
> Racket Users list:
> http://lists.racket-lang.org/users