<div>The Guide contains th following example illustrating the use of named let:</div>
<div>&nbsp;</div>
<div>(define (duplicate pos lst) <br>&nbsp;&nbsp;&nbsp; (let dup ([i 0] <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [lst lst]) <br>&nbsp;&nbsp;&nbsp;&nbsp; (cond <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [(= i pos) (cons (car lst) lst)] <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [else (cons (car lst) (dup (+ i 1) (cdr lst)))]))) <br>&nbsp;<br>&nbsp;<br>&nbsp; &gt; (duplicate 1 (list &quot;apple&quot; &quot;cheese burger!&quot; &quot;banana&quot;)) <br>
&nbsp; (&quot;apple&quot; &quot;cheese burger!&quot; &quot;cheese burger!&quot; &quot;banana&quot;)</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>I can see that i is initially bound to 0, but [lst lst] looks odd. The equivalent letrec</div>
<div>&nbsp;</div>
<div>&nbsp; (letrec ([proc-id (lambda (arg-id ...) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; body ...+)]) <br>&nbsp;&nbsp;&nbsp; (proc-id init-expr ...)) </div>
<div>&nbsp;</div>
<div>helps, because it shows that lst needs to appear (with some binding) to be an argument to th elambda expression bound to dup. At least that&#39;s my reading.</div>
<div>&nbsp;</div>
<div>I don&#39;t use named let much (which is why I was looking it up), and so this may not be a good example, but since this is The Guide, I wonder if providing an example along the lines of</div>
<div>&nbsp;</div>
<div>(define (factorial n)<br>&nbsp;&nbsp;&nbsp; (let fact ([i 0] [result 1])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (= i n)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (fact (+ i 1) (* (+ i 1) result)))))</div>
<div>&nbsp;</div>
<div>first might make it seem a bit less mysterious. (Wow, that was all one sentence!)</div>