Ok, I quite agree with you. Indeed my little tests did not show any significant difference.<br><br>Laurent<br><br><div class="gmail_quote">On Fri, Nov 20, 2009 at 17:32, Carl Eastlund <span dir="ltr">&lt;<a href="mailto:carl.eastlund@gmail.com">carl.eastlund@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div></div><div class="h5">On Fri, Nov 20, 2009 at 11:25 AM, Laurent &lt;<a href="mailto:laurent.orseau@gmail.com">laurent.orseau@gmail.com</a>&gt; wrote:<br>


&gt;<br>
&gt; On Fri, Nov 20, 2009 at 17:14, Carl Eastlund &lt;<a href="mailto:carl.eastlund@gmail.com">carl.eastlund@gmail.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; On Fri, Nov 20, 2009 at 10:55 AM, Joe Marshall &lt;<a href="mailto:jmarshall@alum.mit.edu">jmarshall@alum.mit.edu</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; &gt; On Fri, Nov 20, 2009 at 5:57 AM, Laurent &lt;<a href="mailto:laurent.orseau@gmail.com">laurent.orseau@gmail.com</a>&gt;<br>
&gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; I have the following (simplified) code :<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; (define (f1 x)<br>
&gt;&gt; &gt;&gt;   (let ([y (foo x)])<br>
&gt;&gt; &gt;&gt;     (bar x y y)<br>
&gt;&gt; &gt;&gt;     (plop y x y)<br>
&gt;&gt; &gt;&gt;     (baz x y)))<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; (define (f2 x)<br>
&gt;&gt; &gt;&gt;   (let ([y (foo x)])<br>
&gt;&gt; &gt;&gt;     (baz x y)))<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; (define (wrapper receiver)<br>
&gt;&gt; &gt;  (lambda (x)<br>
&gt;&gt; &gt;    (let ((y (foo x)))<br>
&gt;&gt; &gt;      (receiver x y)<br>
&gt;&gt; &gt;      (baz x y))))<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; (define f1<br>
&gt;&gt; &gt;   (wrapper<br>
&gt;&gt; &gt;     (lambda (x y)<br>
&gt;&gt; &gt;         (bar x y y)<br>
&gt;&gt; &gt;         (plop y x y) )))<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; (define f2<br>
&gt;&gt; &gt;   (wrapper<br>
&gt;&gt; &gt;      (lambda (x y) #f)))<br>
&gt;&gt;<br>
&gt;&gt; Oops.  Joe, of course, has the best solution.  No need for &quot;macrology&quot;<br>
&gt;&gt; when &quot;functionality&quot; does the job.  Pardon the puns.<br>
&gt;<br>
&gt; But this introduces a (little?) run-time cost, doesn&#39;t it?<br>
<br>
</div></div>Two responses.  One, code clarity is almost always more important than<br>
tiny runtime costs.  Two, no it doesn&#39;t, as long as the compiler is<br>
even halfway intelligent about inlining and constant propagation.<br>
Trust the compiler.  If it&#39;s good, it&#39;s often smarter about optimizing<br>
your code than you are.  If it&#39;s bad, your code is never going to run<br>
fast anyway.<br>
<font color="#888888"><br>
--Carl<br>
</font></blockquote></div><br>