Ingo~ On 6/7/05, Ingo Blechschmidt <[EMAIL PROTECTED]> wrote: > Hi, > > sub foo (Code $code) { > my $return_to_caller = -> $ret { return $ret }; > > $code($return_to_caller); > return 23; > } > > sub bar (Code $return) { $return(42) } > > say foo &bar; # 42 or 23? > > I think it should output 42, as the return() in the pointy > block $return_to_caller affects &foo, not the pointy block. > To leave a pointy block, one would have to use leave(), right?
I don't like this because the function bar is getting oddly prematurely halted. If bar had read sub bar(Code $moo) { $moo(13); save_the_world(); } it would not have gotten to save the world. One might argue that $moo could throw an exception, but bar has a way to catch that. It seems to me that what you are asking for has the potential to cause some vary large unexpected jumps down the stack. That said, I would want the pointy subs in for loops to ask this way, so maybe this is just one of those things that one has to be ware of. Matt -- "Computer Science is merely the post-Turing Decline of Formal Systems Theory." -???