You could also make your intentions more explicit using

    #lang racket
    (define counter (box 0))

In the REPL, you would then do

    (set-box! counter (add1 (unbox counter)))

Neil T

On 10/31/2011 11:20 AM, David Vanderson wrote:
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, jkaczo...@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

Reply via email to