[racket] constant vs. variable behavior

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Fri Oct 17 13:29:53 EDT 2014

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



Posted on the users mailing list.