<div><font face="courier new,monospace">There&#39;s something quite basic about how scheme works that eludes me.  Please let me know if it would be more appropriate to post this somewhere eles.</font></div>
<div><font face="courier new,monospace"> </font></div>
<div><font face="courier new,monospace">This program works as I expect:</font></div>
<div><font face="courier new,monospace"> </font></div>
<div><font face="courier new,monospace">(let loop ((a  0))</font></div>
<div><font face="courier new,monospace">  (if (&gt; a 3)</font></div>
<div><font face="courier new,monospace">      (print &quot;it&#39;s over&quot;)</font></div>
<div><font face="courier new,monospace">      (begin (print a)</font></div>
<div><font face="courier new,monospace">             (loop (+ 1 a)))))</font></div>
<div><font face="courier new,monospace"> </font></div>
<div><font face="Courier New">If add an extra set of parentheses around the begin clause:<br><br>(let loop ((a  0))<br>  (if (&gt; a 3)<br>      (print &quot;it&#39;s over&quot;)<br>      (begin ((print a)<br>             (loop (+ 1 a))))))</font></div>

<div><font face="Courier New"></font> </div>
<div><font face="Courier New">I get the following (from DrRacket 5.3.1) :</font></div>
<div><font face="courier new,monospace">0123&quot;it&#39;s over&quot;. . application: not a procedure;<br> expected a procedure that can be applied to arguments<br>  given: #&lt;void&gt;<br>  arguments...:<br>   #&lt;void&gt;</font></div>

<div><font face="Courier New"></font> </div>
<div><font face="Courier New">I don&#39;t understand how adding the extra parentheses caused the change in behavior.</font></div>
<div><font face="Courier New"></font> </div>
<div><font face="Courier New">Thanks,<br>Jan Erik</font></div>