<div dir="ltr">On Thu, May 23, 2013 at 4:13 PM, Ryan Culpepper <span dir="ltr">&lt;<a href="mailto:ryanc@ccs.neu.edu" target="_blank">ryanc@ccs.neu.edu</a>&gt;</span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class=""><div class="h5">On 05/23/2013 01:57 AM, Eric Dobson wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Some modules have macros which expand into identifiers that are not<br>
exported, as they want to protect those bindings. TR currently has the<br>
following code which allows it to generate an identifier which is<br>
free-identifier=? to what would appear in the output of the macros.<br>
<br>
define (make-template-identifier what where)<br>
   (let ([name (module-path-index-resolve (module-path-index-join where #f))])<br>
     (parameterize ([current-namespace (make-empty-namespace)])<br>
       (namespace-attach-module (current-namespace) &#39;&#39;#%kernel)<br>
       (parameterize ([current-module-declare-name name])<br>
         (eval `(,#&#39;module any &#39;#%kernel<br>
                  (#%provide ,what)<br>
                  (define-values (,what) #f))))<br>
       (namespace-require `(for-template ,name))<br>
       (namespace-syntax-introduce (datum-&gt;syntax #f what)))))<br>
<br>
This turns out to be a slightly slow part of the initialization of TR.<br>
Does anyone know another way to get such an identifier?<br>
</blockquote>
<br></div></div>
There&#39;s another way around this issue, which is to avoid creating these identifiers at all. In other words, change the representation of the type environment to something that supports symbol+module pairs as keys in addition to identifiers. The easiest way to do that is to add in a hash table behind the current free-id-table, since the two tables would handle disjoint sets of identifiers.<span class=""><font color="#888888"><br>


<br>
Ryan</font></span></blockquote><div><br></div><div>I would not have thought that&#39;d work, but apparently identifier-binding will give one that information.  Nice going, Ryan!<br><br></div><div>--Carl<br></div></div></div>

</div>