I&#39;m trying to write a macro provide a new way to define functions so that:<div><br></div><blockquote class="webkit-indent-blockquote" style="margin:0 0 0 40px;border:none;padding:0px"><div><div><br></div><div>(define fold-left</div>
<div>  (function</div><div>   _ i &#39;() -&gt; i</div><div>   f i (cons x xs) -&gt; (fold-left f (f i x) xs)))</div></div></blockquote><div><br></div>Would be valid syntax that would expand to:<div><br></div><blockquote class="webkit-indent-blockquote" style="margin:0 0 0 40px;border:none;padding:0px">
<div><div>(define fold-left</div><div>  (match-lambda*</div><div>    [(list _ i &#39;()) i]</div><div>    [(list f i (cons x xs)) (fold-left f (f i x) xs)]))</div></div><div><br></div></blockquote>So far I have been able to get there half-way by wrapping each <i>args ...</i> -&gt; <i>body</i> pattern in parens, which makes the above declaration look like this:<div>
<br></div><blockquote class="webkit-indent-blockquote" style="margin:0 0 0 40px;border:none;padding:0px"><div>(define fold-left<br>  (function<br>   [_ i &#39;() -&gt; i]<br>   [f i (cons x xs) -&gt; (fold-left f (f i x) xs)]))</div>
<div><br></div></blockquote>By using this macro:<div><div><div><div><br></div><blockquote class="webkit-indent-blockquote" style="margin:0 0 0 40px;border:none;padding:0px"><div><div>(define-syntax function</div></div><div>
<div>  (syntax-rules (-&gt;)</div></div><div><div>    [(_ (args ... -&gt; body) ...)</div></div><div><div>     (match-lambda*</div></div><div><div>       [(list args ...) body]</div></div><div><div>       ...)]))</div></div>
</blockquote><div><br></div></div></div></div><div>What macro voodoo do I need to harness in order to be able to implement the first definition syntax where the <i>args ... -&gt; body</i> segments need not be wrapped in parens?</div>
<div><br></div><div>BTW, first time poster, so go easy on me :)</div><div><br></div><div>Thanks a bunch!</div><div>-- Helmut</div>