<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! 'identifier?' 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, 'local-expand' it and look at the result.<br>
</blockquote><div><br>Will I not always get an "unbound identifier in module" (or something similar) with the offending variable explicitly in the message? That'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's no guarantee that there isn't another thread holding a reference to it, waiting to change it from a real to, say a complex number right after the 'real?' check is done.<br>
</blockquote><div><br>I'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't defeat the purpose of the macro - to protect unsafe code. I would say don'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>