<div class="gmail_quote"><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div class="h5"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

</blockquote>
<br></div></div>
No! &#39;identifier?&#39; does not check whether a syntax object represents a variable reference, given 1) identifier macros and 2) #%top transformers for unbound variables. If you really, really want to check if something is a variable reference, &#39;local-expand&#39; it and look at the result.<br>
</blockquote><div><br>Will I not always get an &quot;unbound identifier in module&quot; (or something similar) with the offending variable explicitly in the message? That&#39;s as good to me as any message I make up. If not, it would be worth the effort.<br>
<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
But even if it is a variable reference, there&#39;s no guarantee that there isn&#39;t another thread holding a reference to it, waiting to change it from a real to, say a complex number right after the &#39;real?&#39; check is done.<br>
</blockquote><div><br>I&#39;m sure one can always come up with pathological things that can be done. Even if I do something to ensure that the test and binding are atomic, I not sure it doesn&#39;t defeat the purpose of the macro - to protect unsafe code. I would say don&#39;t use unsafe code on variables that are shared among processes.<br>
<br>But thanks for the comments.<br> <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><font color="#888888">
<br>
Ryan<br>
<br>
</font></blockquote></div><br>