<?xml version="1.0" encoding="windows-1252"?>
<node id="249925" title="Re: Re: Re: (Perl6) Groking Continuations" created="2003-04-11 12:49:37" updated="2005-07-27 15:08:17">
<type id="11">
note</type>
<author id="16591">
andrewc</author>
<data>
<field name="doctext">
&lt;p&gt;Is the right answer. It's not a real continuation because squirreling away a copy of the sub-reference $fred in, say, a package-global variable $Jane and calling $Jane later doesn't do what a real call-cc would allow you to do.&lt;/p&gt;

&lt;code&gt;
  use vars qw{$Jane};
  print call_cc {
    my $fred = shift;
    $Jane = $fred;  # Squirrel away a reference
    $fred-&gt;(42);
    64;   #NOTREACHED
  };
  print "\n";

  # And then call it later, outside the call_cc block...
  $Jane-&gt;(101);                 #bang.
&lt;/code&gt;

&lt;p&gt;Results in... you guessed it, an uncaught exception. So it's just an ersatz call-cc.&lt;/p&gt;

&lt;p&gt;Funnily enough, call-cc is used in Scheme-like languages a lot for early exits from deep/non-deterministic recursions despite also having a try/catch-style mechanism.&lt;/p&gt;
</field>
<field name="root_node">
248935</field>
<field name="parent_node">
249700</field>
</data>
</node>
