Rebinding binding

Skip to first unread message

Luke Palmer

Aug 17, 2005, 6:21:19 PM8/17/05
to Perl6 Language List
Two years ago or so, I became very happy to learn that the left side
of binding works just like a routine signature. So what if binding
*were* just a routine signature. That is, could we make this:

sub foo () {
say "hello";
my $x := bar();
say "goodbye $x";

Equivalent to this:

sub foo () {
say "hello";
-> $x {
say "goodbye $x";

Then observe:

sub foo() {
say "hello";
my $x := 1|2|3;
say "goodbye $x";

goodbye 1
goodbye 2
goodbye 3

If you bind an existing variable (instead of introducing a new one
with my), you get a delimited continuation for the scope of that
variable. Consequently, if you bind a global, you get a full

I know, I know, this is putting continuations into the realm of
!/<upper>{10...}/, but I have an argument for this. The only people
who will ever see the continuations are the people *implementing*
junctions and junction-like things. And those people are already
gurus, so they should be comfortable in dealing with continuations.

The only other time that a user might get caught with continuation
"weirdness" is if they're binding to junctions as above (since there
are no other such values in the language... just yet). And with the
default "no junctions", junctions aren't allowed in variables anyway,
so what do they expect?


Reply all
Reply to author
0 new messages