If you take this program and fully-expand it in the macro stepper: #lang racket (struct posn (x y)) (define p1 (posn 1 2))
You see that the residual program has an application of the `posn1` function, which is the hidden constructor. And indeed, the fully-expanded program has a definition of `posn1`. However, if you click on the use of `posn1`, the macro stepper will tell you that it's defined in this module as `posn1.1`, and provided as `posn1.1` as well. If you write program to grovel through the fully-expanded syntax, you get these same results as the `src-id` and `nominal-src-id` from `identifier-binding`. Why is this? And is there a way to get from `posn1.1` to `posn1` reliably? Sam _________________________ Racket Developers list: http://lists.racket-lang.org/dev