<p dir="ltr">Does that mean that I can/should just drop the .1 to get the defined name? Can it also be .2 etc?</p>
<p dir="ltr">Sam</p>
<div class="gmail_quote">On Jul 16, 2014 4:34 AM, "Matthew Flatt" <<a href="mailto:mflatt@cs.utah.edu">mflatt@cs.utah.edu</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
That `posn1.1` is a unreadable symbol that stands for the symbol<br>
`posn1` plus some marks that distinguish it.<br>
<br>
In other words, `posn1.1` bridges (in an ugly way) the symbol-based<br>
world of module environments and the identifier-based world of syntax.<br>
In the future, I hope to shift module environments to be<br>
identifier-based to avoid these unreadable symbols.<br>
<br>
At Tue, 15 Jul 2014 09:10:26 -0400, Sam Tobin-Hochstadt wrote:<br>
> If you take this program and fully-expand it in the macro stepper:<br>
><br>
> #lang racket<br>
> (struct posn (x y))<br>
> (define p1 (posn 1 2))<br>
><br>
> You see that the residual program has an application of the `posn1`<br>
> function, which is the hidden constructor. And indeed, the<br>
> fully-expanded program has a definition of `posn1`. However, if you<br>
> click on the use of `posn1`, the macro stepper will tell you that it's<br>
> defined in this module as `posn1.1`, and provided as `posn1.1` as<br>
> well. If you write program to grovel through the fully-expanded<br>
> syntax, you get these same results as the `src-id` and<br>
> `nominal-src-id` from `identifier-binding`.<br>
><br>
> Why is this? And is there a way to get from `posn1.1` to `posn1` reliably?<br>
><br>
> Sam<br>
</blockquote></div>