<div dir="ltr"><font face="courier new, monospace">I have a signature that includes a macro to clean up the use of one of the procs in the signature.</font><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">Two different units with the same signature are used via define-values/invoke-unit - the second one uses a prefix in the export sig-spec to differentiate it from the first.</font></div>

<div><font face="courier new, monospace">The macro introduced by the second use does not refer to the other proc using the prefix.</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">The concrete example:</font></div>

<div><font face="courier new, monospace"><br></font></div><div><div><font face="courier new, monospace">;; Signature of a message channel</font></div><div><font face="courier new, monospace">(define-signature message-channel^</font></div>

<div><font face="courier new, monospace">  (</font></div><div><font face="courier new, monospace">   ;; ...</font></div><div><font face="courier new, monospace">   msg-chan-subscribe   ; ( (msg -&gt; boolean) first? -&gt; thunk)</font></div>

<div><font face="courier new, monospace">   </font></div><div><font face="courier new, monospace">   ;; Enqueue message(s) for a channel at normal priority </font></div><div><font face="courier new, monospace">   &lt;--   ; ( msg .. -&gt; void )</font></div>

<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">   ;; Enqueue message(s) for a channel at high priority </font></div><div><font face="courier new, monospace">   &lt;++   ; ( msg .. -&gt; void )</font></div>

<div><font face="courier new, monospace">      </font></div><div><font face="courier new, monospace">   ;; Macro to create a message handler.</font></div><div><font face="courier new, monospace">   ;; ...</font></div><div>

<font face="courier new, monospace">   (define-syntaxes (==&gt;)</font></div><div><font face="courier new, monospace">     (syntax-rules (msg)</font></div><div><font face="courier new, monospace">       [(_ match-body ...) (msg-chan-subscribe </font></div>

<div><font face="courier new, monospace">                            (ë(msg) </font></div><div><font face="courier new, monospace">                              (syntax-parameterize </font></div><div><font face="courier new, monospace">                               ([the-message (make-rename-transformer #&#39;msg)])</font></div>

<div><font face="courier new, monospace">                               (match msg </font></div><div><font face="courier new, monospace">                                 match-body ...</font></div><div><font face="courier new, monospace">                                 [_ #t])))</font></div>

<div><font face="courier new, monospace">                            #f)]))</font><span style="font-family:&#39;courier new&#39;,monospace">))</span></div></div><div><span style="font-family:&#39;courier new&#39;,monospace"><br>

</span></div><div><span style="font-family:&#39;courier new&#39;,monospace"><br></span></div><div><span style="font-family:&#39;courier new&#39;,monospace">When (</span><span style="font-family:&#39;courier new&#39;,monospace">define-values/invoke-unit &lt;some-unit&gt; (import) (export (prefix diagram message-channel^))) is used it introduces the bindings diagram&lt;-- , diagram&lt;++ , diagrammsg-chan-subscribe and diagram==&gt; .</span></div>

<div><span style="font-family:&#39;courier new&#39;,monospace"><br></span></div><div><span style="font-family:&#39;courier new&#39;,monospace">The form</span></div><div><font face="courier new, monospace"><br></font></div>

<div><font face="courier new, monospace">(diagram==&gt;</font></div><div><font face="courier new, monospace">   .. message handlers ..)</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">expands to (msg-chan-subscribe ...) rather than (</font><span style="font-family:&#39;courier new&#39;,monospace">diagrammsg-chan-subscribe ...) - and thus it listens to the first (wrong) message channel.</span></div>

<div><span style="font-family:&#39;courier new&#39;,monospace"><br></span></div><div><span style="font-family:&#39;courier new&#39;,monospace">Is there any way to make macros defined in signatures be aware of the prefix used with the signature ?</span></div>

</div>