Re: The Block Returns

2003-10-16 Thread Dave Mitchell
On Thu, Oct 16, 2003 at 01:46:30AM +0100, Simon Cozens wrote: [EMAIL PROTECTED] (Larry Wall) writes: But for the time being I'm tied to an IV pole We got rid of those; they're PMC poles now. Get well soon, Ditto! Dave. -- Little fly, thy summer's play my thoughtless hand has

Re: The Block Returns

2003-10-15 Thread Larry Wall
On Thu, Oct 02, 2003 at 01:59:26AM -0600, Luke Palmer wrote: : So, I must ask, what does this do: : : sub foo() { : return my $self = { : print Block; : return $self; : } : } : : my $block = foo; : print Main; : $block(); :

RE: The Block Returns

2003-10-03 Thread Austin Hastings
-Original Message- From: Luke Palmer [mailto:[EMAIL PROTECTED] Sent: Thursday, October 02, 2003 10:23 PM To: Jeff Clites Cc: [EMAIL PROTECTED]; [EMAIL PROTECTED] Subject: Re: The Block Returns Jeff Clites writes: Speaking to the practical side, I have written code that has

Re: The Block Returns

2003-10-03 Thread Luke Palmer
Austin Hastings writes: -Original Message- From: Luke Palmer [mailto:[EMAIL PROTECTED] But this is already supported, in its most powerful form: wrap block: { call; other_stuff() } Hmm, no. That does a call, which presumes a return, which burns up who-knows-how-many

Re: The Block Returns

2003-10-03 Thread Simon Cozens
[EMAIL PROTECTED] (Austin Hastings) writes: Frankly, I think I'd rather see: Some nits: macro atexit($code) is parsed(/{ Perl6.line* }/) { Probably just macro atexit($code) is parsed(/Perl6.block/) { $block .= $code; $block _= $code; Dunno what .= would mean now . is method

Re: The Block Returns

2003-10-03 Thread Luke Palmer
Simon Cozens writes: [EMAIL PROTECTED] (Austin Hastings) writes: Frankly, I think I'd rather see: Some nits: macro atexit($code) is parsed(/{ Perl6.line* }/) { Probably just macro atexit($code) is parsed(/Perl6.block/) { $block .= $code; $block _= $code;

Re: The Block Returns

2003-10-03 Thread Dan Sugalski
On Fri, 3 Oct 2003, Simon Cozens wrote: [EMAIL PROTECTED] (Austin Hastings) writes: eval($block) if defined $block; I prefer $block.compile.run to eval() They're not quite equivalent -- I think eval's still wrapping a try/catch around the call.

Re: The Block Returns

2003-10-03 Thread Adam D. Lopresto
On Fri, 3 Oct 2003, Simon Cozens wrote: Dunno what .= would mean now . is method call. I'm sure someone will make it mean something. :) I've been saying for some time now that .= should mean exactly what one would expect it to mean, method call and assign the result, for code like $str .= lc;

Re: The Block Returns

2003-10-03 Thread Mark A. Biggar
Austin Hastings wrote: -Original Message- From: Luke Palmer [mailto:[EMAIL PROTECTED] Sent: Thursday, October 02, 2003 10:23 PM To: Jeff Clites Cc: [EMAIL PROTECTED]; [EMAIL PROTECTED] Subject: Re: The Block Returns Jeff Clites writes: Speaking to the practical side, I have written code

Re: The Block Returns

2003-10-03 Thread Dan Sugalski
On Thu, 2 Oct 2003, Mark A. Biggar wrote: Austin Hastings wrote: But that imposes Ceval()/C pretty frequently. Better to provide some lower-level hackish way to agglutinate Blocks. Isn't this one of the prime examples of why CPS is being use, it allows for Tail Recursion Optimization.

Re: The Block Returns

2003-10-03 Thread Piers Cawley
Dan Sugalski [EMAIL PROTECTED] writes: On Thu, 2 Oct 2003, Mark A. Biggar wrote: Austin Hastings wrote: But that imposes Ceval()/C pretty frequently. Better to provide some lower-level hackish way to agglutinate Blocks. Isn't this one of the prime examples of why CPS is being use, it

Re: The Block Returns

2003-10-03 Thread Dan Sugalski
At 11:55 PM +0100 10/3/03, Piers Cawley wrote: Dan Sugalski [EMAIL PROTECTED] writes: On Thu, 2 Oct 2003, Mark A. Biggar wrote: Austin Hastings wrote: But that imposes Ceval()/C pretty frequently. Better to provide some lower-level hackish way to agglutinate Blocks. Isn't this one of the

Re: The Block Returns

2003-10-03 Thread Piers Cawley
Dan Sugalski [EMAIL PROTECTED] writes: At 11:55 PM +0100 10/3/03, Piers Cawley wrote: Dan Sugalski [EMAIL PROTECTED] writes: On Thu, 2 Oct 2003, Mark A. Biggar wrote: Austin Hastings wrote: But that imposes Ceval()/C pretty frequently. Better to provide some lower-level hackish way

Re: The Block Returns

2003-10-02 Thread Stefan Lidman
So, I must ask, what does this do: sub foo() { return my $self = { print Block; return $self; } } my $block = foo; # = sub {print Block; return $self;} A6: One obvious difference is that the sub on closures is now optional,

Re: The Block Returns

2003-10-02 Thread Luke Palmer
Stefan Lidman writes: So, I must ask, what does this do: sub foo() { return my $self = { print Block; return $self; } } my $block = foo; # = sub {print Block; return $self;} A6: One obvious difference is that the

Re: The Block Returns

2003-10-02 Thread Dave Mitchell
On Thu, Oct 02, 2003 at 04:15:06AM -0600, Luke Palmer wrote: And to clarify: sub indexof(Selector $which, [EMAIL PROTECTED]) { for zip(@data, 0...) - $_, $index { when $which { return $index } } } Which actually creates a closure (well, in theory at

Re: The Block Returns

2003-10-02 Thread Jonathan Scott Duff
On Thu, Oct 02, 2003 at 11:39:20AM +0100, Dave Mitchell wrote: On Thu, Oct 02, 2003 at 04:15:06AM -0600, Luke Palmer wrote: So the question is: What happens when indexof isn't on the call chain, but that inner closure is? But how can the inner closure be called if not via indexof? I

Re: The Block Returns

2003-10-02 Thread Mark A. Biggar
Jonathan Scott Duff wrote: On Thu, Oct 02, 2003 at 11:39:20AM +0100, Dave Mitchell wrote: On Thu, Oct 02, 2003 at 04:15:06AM -0600, Luke Palmer wrote: So the question is: What happens when indexof isn't on the call chain, but that inner closure is? But how can the inner closure be called if not

RE: The Block Returns

2003-10-02 Thread Austin Hastings
-Original Message- From: Jonathan Scott Duff [mailto:[EMAIL PROTECTED] On Thu, Oct 02, 2003 at 11:39:20AM +0100, Dave Mitchell wrote: On Thu, Oct 02, 2003 at 04:15:06AM -0600, Luke Palmer wrote: So the question is: What happens when indexof isn't on the call chain, but that

Re: The Block Returns

2003-10-02 Thread Jeff Clites
Speaking to the practical side, I have written code that has to disentangle itself from the failure of a complex startup sequence. I'd love to be able to build a dynamic exit sequence. (In fact, being able to do Cblock .= { more_stuff(); };/C is way up on my list...) I've wanted to do that sort

Re: The Block Returns

2003-10-02 Thread Luke Palmer
Jeff Clites writes: Speaking to the practical side, I have written code that has to disentangle itself from the failure of a complex startup sequence. I'd love to be able to build a dynamic exit sequence. (In fact, being able to do Cblock .= { more_stuff(); };/C is way up on my list...)