I've finally tracked down the problem and pushed a repair (commit c4508ad0d9).
At Fri, 8 Aug 2014 07:05:04 -0700, Matthew Butterick wrote: > FWIW this isn't a gratuitously perverse example. It's derived from the actual > bug I've encountered. I use `eval` in my Pollen system to handle dynamic > rendering of pages delivered through the web server (don't panic, everyone — > it's an approved use of `eval` [1]) > > I use the `dynamic-rerequire` to reload files that have changed since last > render. In fact you added it at my request, as I was looking for a Racket > function that approximated the Python `reload` function. [2] > > For now I've worked around the bug — in test-case terms, I've changed this > > ;;; three.rkt > #lang racket > > To this: > > ;;; three.rkt > #lang racket/base > > But why that makes a difference, I'm not clear. > > [1] http://docs.racket-lang.org/web-server/faq.html > [2] http://lists.racket-lang.org/users/archive/2013-April/057530.html > > > On Aug 7, 2014, at 10:23 PM, Matthew Flatt <mfl...@cs.utah.edu> wrote: > > > 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 ____________________ Racket Users list: http://lists.racket-lang.org/users