At Tue, 8 Jun 2010 12:23:54 -0500, Casey Klein wrote: > `define-for-syntax' doesn't allow optional or keyword arguments, > although the documentation suggests it should. > > I tried to fix this myself, but I'm getting a mysterious compile error. > [...] > collects/racket/private/kw.rkt:708:46: compile: unbound identifier in > module (in phase 1, transformer environment) in: new-lambda > [...] > > I don't get the error when I `racket' the files I changed. > [...] > Is there some bootstrapping trick I need to know?
There's no special bootstrapping step. The error only happens when a use of `define-for-syntax' is expanded, which is why directly requiring "kw.rkt" doesn't trigger an error. When `define-for-syntax' is used in some other module, though, it expands into a phase-1 use of `new-lambda', while the "kw.rkt" module context binds `new-lambda' only at phase 0. There's no way to define `define-for-syntax' inside of "kw.rkt". It can be implemented in "pre-base.rkt" by importing "kw.rkt" for syntax. I've made that change, and I'll push after building and testing.