<div class="gmail_quote">On Fri, May 4, 2012 at 4:37 PM, Eli Barzilay <span dir="ltr">&lt;<a href="mailto:eli@barzilay.org" target="_blank">eli@barzilay.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">


<div>20 minutes ago, Carl Eastlund wrote:<br>
&gt;<br>
</div>In case it wasn&#39;t clear enough, I said that I don&#39;t mind having it<br>
(and I&#39;m willing to add it) -- I only added that I don&#39;t see any<br>
*practical* case where you&#39;d use it.<br><div></div></blockquote><div><br></div>Okay, then I think we&#39;re more or less on the same page.<br><br>I do think there is a practical use for such a form; specifically, macros that expand into a use of match.  Here&#39;s a simple example:<br>

<br>(define-syntax (let/list stx)<br>  (syntax-parse stx<br>    [(_ {[(lhs:id ...) rhs:expr] ...} body:expr ...+)<br>     (syntax<br>       (match (list rhs ...)<br>         [(list (list lhs ...) ...) body ...]))]))<br><br>

This is a straightforward use of match to destructure a list, but it isn&#39;t transparent: it exposes to clients of let/list that _, ..., and any hypothetical match id expanders are invalid choices for lhs.  There&#39;s no real reason clients of let/list should know that match is even involved.  There are existing solutions -- don&#39;t use match in macros, or always bind an extra set of temporaries -- but adding some kind of &quot;no really, bind this please&quot; form would be even simpler.  I&#39;d call it (var &lt;name&gt;) by analogy to syntax-parse&#39;s (~var &lt;name&gt; [&lt;optional-class&gt;]), which I have in fact used for the same purpose.<br>

<br>--Carl<br></div>