Ok, here's a much simpler example: #lang racket
(module foo racket (provide def-wrap) (define-syntax-rule (def-wrap) (begin (define y 1) y))) (module bar racket (require (submod ".." foo)) (def-wrap)) In the fully-expanded syntax, the macro stepper suggests that `y` has no apparent binding. At this point it seems unlikely that it's a bug, since it happens all the time, but I still don't understand. Sam On Thu, Jul 24, 2014 at 4:08 PM, Sam Tobin-Hochstadt <sa...@cs.indiana.edu> wrote: > If you take this program (which is a lot like the implementation of > `racket/fixnum`): > > #lang racket/base > > (require '#%flfxnum > racket/private/vector-wraps > racket/unsafe/ops > (for-syntax racket/base)) > > (define-vector-wraps "fxvector" > "fixnum?" fixnum? > fxvector? fxvector-length fxvector-ref fxvector-set! make-fxvector > unsafe-fxvector-ref unsafe-fxvector-set! unsafe-fxvector-length > in-fxvector* > in-fxvector > for/fxvector > for*/fxvector > fxvector-copy > 0) > > And run it in the macro stepper with macro hiding off, at the end you > get a fully-expanded module where the first definition is > `:fXvector-gen`. However, if you click on this identifier, either in > the definition or in a subsequent use, it says "Apparent identifier > binding: none" (which means that `identifier-binding` returns #f, > which can be confirmed on the expanded syntax). > > How can this happen? Is it a bug in something, or a special case that > I didn't expect? > > Sam _________________________ Racket Developers list: http://lists.racket-lang.org/dev