<div dir="ltr"><div>This looks to me like something tricky that #lang web-server is doing. Here's a simplified example:</div><div><br></div><div><div>#lang web-server</div><div>(define (f me)</div><div>  `((a . ,me)</div><div>    (r . ,me)</div><div>    ,@me))</div></div><div><br></div><div><br></div><div>Perhaps someone (Jay?) can shed a little light on what transformations #lang web-server is doing in this case and we can see if it needs to change or if check syntax does.</div><div><br></div><div>My guess is that the second "me" is ending up in a binding position that shadows the original binding of "me" and probably just rebinds it. Looking at the expansion it isn't clear to me which one and whether or not there are actually two of them (if there are, then the one that "looks wrong" to check syntax can just be turned off somehow probably).</div><div><br></div><div>Robby</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Jan 4, 2015 at 1:18 AM, Jordan Johnson <span dir="ltr"><<a href="mailto:jmj@fellowhuman.com" target="_blank">jmj@fellowhuman.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Hi all,<div><br></div><div>This behavior (shown in attached images) showed up in some code I was working on tonight: A complex quasiquoted expression is apparently fooling DrRacket (6.1.1 under OS X Yosemite) into thinking one reference refers to another reference, not to its actual binding.</div><div><br></div><div><img height="137" width="636" src="cid:C397FD9E-8974-4593-8C4B-934CA50EA7C7"><img height="144" width="526" src="cid:258129F8-A765-40F6-9240-E5DB2CAC9634"></div><div><br></div><div>(In the code pictured here, <b>oauth2-client</b> is a struct type defined in the file, and <b>me</b> refers to an instance of it. <b>me</b> was a constant that I was in the process of lifting to be a parameter.)</div><div><br></div><div>If I replace the <b>,(oauth2-client-callback me)</b> with a different expression, the bottommost <b>me</b> is then correctly shown referring to the function parameter, but if I retype anything of the form <b>,(some-defined-function me)</b>, the odd behavior comes back. It persists across saving and reloading of the file.</div><div><br></div><div>This seemed worthy of reporting, but after about 40 min of experimentation, I still haven’t managed to reproduce the behavior in another file, so I thought I’d best throw it out to the list to see if it triggers any ideas from someone with more knowledge of the syntax-checking internals.</div><div><br></div><div>Cheers,</div><div>Jordan</div><div><br></div><div><br></div></div><br>____________________<br>
  Racket Users list:<br>
  <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
<br></blockquote></div><br></div>