[racket] set! racket behaviour

From: David Vanderson (david.vanderson at gmail.com)
Date: Mon Oct 31 13:20:05 EDT 2011

I think you are running into the issue described here:
http://docs.racket-lang.org/guide/module-set.html

"Along the same lines, when a module contains no set! 
<http://docs.racket-lang.org/reference/set_.html#%28form._%28%28quote._%7E23%7E25kernel%29._set%21%29%29> 
of a particular identifier that is defined within the module, then the 
identifier is considered a constant that cannot be changed---not even by 
re-declaring the module."

Try in your definitions window:
#lang racket
(define counter 0)
(set! counter 0)


Thanks,
Dave

On 10/31/2011 09:58 AM, jkaczorek at aol.pl wrote:
> Hi,
>
> I'm using DrRacket.
> In an edit window I have written:
>
> #lang racket
> (define counter 0)
>
> I'm pressing "Run" button and next, in a command line, after running a 
> command:
>
> (set! counter (add1 counter))
>
> I receive a message "set!: cannot modify a constant: counter"
>
> The problem can be resolved by changing the language (Language/Choose 
> language/R5RS and unchecking "Disallow redefinition of initial 
> binding") but I suppose that in this way I can lose an access to the 
> racket libraries.
> Of course, I realize, that redefinition of the variables is not good 
> (functional) programming style but sometimes it's necessary. Is there 
> a possibility of such modifications without changing language?
>
> Jerzy
>
>
>
> _________________________________________________
>    For list-related administrative tasks:
>    http://lists.racket-lang.org/listinfo/users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20111031/c8c05e4d/attachment.html>

Posted on the users mailing list.