<br><br><div class="gmail_quote">2009/2/7 Matthew Flatt <span dir="ltr">&lt;<a href="mailto:mflatt@cs.utah.edu">mflatt@cs.utah.edu</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">At Sat, 7 Feb 2009 13:34:38 +0000, James Coglan wrote:<br>
&gt; (begin<br>
&gt; &nbsp; (call/cc<br>
&gt; &nbsp; &nbsp; (lambda (k)<br>
&gt; &nbsp; &nbsp; &nbsp; (set! r k)<br>
&gt; &nbsp; &nbsp; &nbsp; #t))<br>
&gt; &nbsp; (set! count-calls (+ count-calls 1)))<br>
&gt; (r #t) (r #t) (r #t)<br>
&gt;<br>
&gt; I would expect count-calls to equal 4 after this, but it equals 1. The<br>
&gt; continuation, from what little I&#39;ve read about this, should look like:<br>
&gt;<br>
&gt; ([#procedure] [#hole] (set! count-calls (+ count-calls 1)))<br>
<br>
</div>The body of a top-level `begin&#39; is spliced into the top-level sequence,<br>
so the `begin&#39; above doesn&#39;t usefully group the two expressions. (To<br>
put it another way, a top-level `begin&#39; wraps a prompt around each of<br>
its sub-expressions.)</blockquote><div><br>Thanks. Just out of curiosity, is there a function that simply returns the current continuation without jumping to another function using (call/cc)?<br></div></div><br>