At Wed, 6 Aug 2014 15:50:41 -0700, Matthew Butterick wrote: > Under certain circumstances, because of what I assume is a bug in my code, I > get an error like this: > > > define-values: assignment disallowed; > > cannot re-define a constant > > constant: lang:read.1 > > in module: "/Users/mb/git/racket/racket/collects/racket/main.rkt" > > context...: > > (submod /Users/mb/git/racket/racket/collects/racket/main.rkt reader): > [running body] > > I understand how the "assignment disallowed" error arises. What I don't > understand is the meaning of "lang:read.1" in this context. I'm guessing it > has > something to do with the #lang line (?) but ... the rest is hazy.
The "lang:read" part is the name of a variable that appears in the macro expansion of the `racket` module's `reader` submodule. The ".1" part is because that variable is macro-introduced so that it is not directly accessible using the name `lang:read`. The way that `dynamic-rerequire` and submodules interact here is unsatisfying. I think it's a collision between the way that `dynamic-rerequire` pulls from source and the use of `namespace-module-attach` within `make-base-namspace`, and I think that `dynamic-rerequire` needs to do something different, but I haven't yet sorted it out. ____________________ Racket Users list: http://lists.racket-lang.org/users