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

Reply via email to