On syntax expansion.  Is there a way to determine in the macro whether I&#39;m expanding in a typed/racket environment vs regular racket.? Say for example in place.rkt conditionally embellish the syntax templates with additional TR annotations if the syntax is being expanded in TR vs R.<div>
<br></div><div>Thanks,</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Nov 5, 2012 at 3:14 PM, Ray Racine <span dir="ltr">&lt;<a href="mailto:ray.racine@gmail.com" target="_blank">ray.racine@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">OK, so it is a little bit of red herring on the unbound identifer `place?&#39;, i.e. there is an unexported identifier(s) in the expansion of `place?&#39; which is the true issue.   For what it&#39;s worth is yet another level of syntax explosion below `place?&#39;.  But if I get the full explosion graph of these these internal procedures situated into base-special-env.rkt it will all clear up is what I&#39;m taking away.  A quick glance leads me to believe it is less than a dozen, which means doable in finite time.  <div>

<br></div><div>Time to saddle up and start charging them windmills.<br><div><br></div><div>Thanks,</div><div><div class="h5"><div><div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Nov 5, 2012 at 2:50 PM, Sam Tobin-Hochstadt <span dir="ltr">&lt;<a href="mailto:samth@ccs.neu.edu" target="_blank">samth@ccs.neu.edu</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>On Mon, Nov 5, 2012 at 1:58 PM, Ray Racine &lt;<a href="mailto:ray.racine@gmail.com" target="_blank">ray.racine@gmail.com</a>&gt; wrote:<br>


&gt; Consider the innocuous appearing snippit below from<br>
&gt; collects/racket/place/distributed/examples/hello-world.rkt<br>
&gt;<br>
&gt; #lang typed/racket<br>
&gt;<br>
&gt; (require racket/place/distributed<br>
&gt;          racket/place)<br>
&gt;<br>
&gt; (provide hello-world)<br>
&gt;<br>
&gt; (: hello-world (-&gt; Place))<br>
&gt; (define (hello-world)<br>
&gt;   (place ch<br>
&gt;          (printf &quot;hello-world received: ~a\n&quot;<br>
&gt;                  (place-channel-get (assert ch place-channel?)))<br>
&gt;          (define HW &quot;Hello World&quot;)<br>
&gt;          (place-channel-put (assert ch place-channel?) (format &quot;~a\n&quot; HW))<br>
&gt;          (printf &quot;hello-world sent: ~a\n&quot; HW)))<br>
&gt;<br>
&gt;<br>
&gt; First issue is:<br>
&gt; `place&#39; is syntax entailing 2 closed over procs `place/proc&#39; and<br>
&gt; `start-place defined in racket/place.  No prob. I know the secret<br>
&gt; incantation.<br>
&gt;<br>
&gt; So I add a couple of strawman typings base-special-env.rkt and these<br>
&gt; immediate undefined identifier errors magically go away.<br>
&gt;<br>
&gt;  ;; from the expansion of `place&#39;<br>
&gt;   [(make-template-identifier &#39;place/proc &#39;racket/place)<br>
&gt;    (-&gt; -Variable-Reference -Symbol -Symbol (-&gt; -Symbol -Resolved-Module-Path<br>
&gt; -Symbol (-opt -Input-Port) (-opt -Output-Port) (-opt -Output-Port) -Place)<br>
&gt;        (-opt -Input-Port) (-opt -Output-Port) (-opt -Output-Port)<br>
&gt;        -Place)]<br>
&gt;   [(make-template-identifier &#39;start-place &#39;racket/place)<br>
&gt;    (-&gt; -Symbol -Resolved-Module-Path -Symbol (-opt -Input-Port) (-opt<br>
&gt; -Output-Port) (-opt -Output-Port)<br>
&gt;        -Place)]<br>
&gt;<br>
&gt; The next one in the conga line is an unknown identifier error for `place?&#39;,<br>
&gt; which _is_ publicly exported by racket/place.  But `place?&#39; is itself<br>
&gt; syntax, so I donno, we have some sort of require-syntax-for-syntax sort of<br>
&gt; thing going on.<br>
&gt;<br>
&gt; Just for laughs I tossed the below into base-special-env.rkt. and now<br>
&gt; hello-world.rkt has errors on duplicate definition of `place?&#39;.<br>
&gt;  [(make-template-identifier &#39;place? &#39;racket/place)<br>
&gt;    (-&gt; Univ -Boolean)]<br>
<br>
</div></div>If `place?` is indeed exported by `racket/place`, then the above won&#39;t<br>
work.  You&#39;ll need to give a type to the internal identifier that<br>
`place?` expands into.<br>
<br>
However, looking at the expansion of the hello-world.rkt program, it<br>
doesn&#39;t seem to contain `place?`.  So I&#39;m confused as to where that&#39;s<br>
coming from.<br>
<br>
Finally, the way the `place` form works means that it would be better<br>
to give a type annotation to `ch` using the #{ch : Place} form.<br>
<div><br>
&gt; Any ideas on how move forward?  The idea was to take a run at TRing the<br>
&gt; collects/racket/place/distributed/examples/hello-world.rkt<br>
&gt;<br>
&gt; Thanks in advance,<br>
&gt;<br>
&gt; Ray<br>
&gt;<br>
&gt;<br>
</div>&gt; ____________________<br>
&gt;   Racket Users list:<br>
&gt;   <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
&gt;<br>
<br>
<br>
<br>
--<br>
sam th<br>
<a href="mailto:samth@ccs.neu.edu" target="_blank">samth@ccs.neu.edu</a><br>
</blockquote></div><br></div></div></div></div></div></div>
</blockquote></div><br></div>