> [perhaps]
> : bare blocks (even those passed as args) just
> : pick up from the surrounding lexical context.

This is definitely a significant simplification.
Is it a problem?

> Yes, that's the problem. A bare block would
> have to notice at run time that it was called
> with unexpected arguments and unbind its
> binding to the outer $_.

That would be ughly, but I don't understand why
you say it must necessarily be so.


> : What does this mean:
> : 
> :     $_ = 1; mumble -> { $_ = 2 }; print;
> : 
> : perhaps the '->' could imply that $_ /is/
> : going to be private to the block somehow?
> 
> As it stands now, explicitly telling it there
> are no arguments would have exactly the opposite
> effect, and bind $_ to the outer $_.

Oh.

I had the vague notion that (inline) bare blocks
don't do anything special beyond establishing
a nested lexical scope:

    $_ = 1; { $_ = 2 }; print; # 2

whereas '->' means the topic gets set and is
private to the block (ignoring aliasing effects):

    $_ = 1; for @foo -> $_ { $_ = 2 }; print; # 1

It seems to me that a logical conclusion would be
that a blank arg list after a '->' would mean the
topic remains private (and is set to undef).

Perhaps having bare blocks work the same simple
way whether or not they appear as an arg, and
have -> behave the same simple way whether or
not it is used with, say, a for, or as a sub
def, introduces problems or lost opportunities
elsewhere that nix the whole idea. But wait...


> I think C<mumble> has to be able to wrap its own
> idea of $_ around the block at compile time somehow.

Perhaps.

But presumably you agree that it would be
nice if the calling syntax naturally made
it clear how $_ was being bound.

And documenting this by the '->' distinction
described above (ie -> means private $_ set
by mumble, no -> means $_ is just the outer
lexical) would look natural as well being
logical and strikingly simple.


> Perhaps we need to distinguish the type of
> a "thunk" from a "sub" in the signature of
> C<mumble>.

This would not be necessary with the scenario
I describe above.


--
ralph

Reply via email to