> "given nothing...":
>
>     given () { ... }

    do  { ... }

seems simpler.




> Suppose you want to preserve $_ and alias
>
>    given $value -> $g {

'->' seems more visually noisy than it need be in this case.

Perhaps:

    given $value as $g { ... }

    for @foo as $f { ... }

But, I can see how

>     for 0 .. Inf; "a" .. "z" x 1000 -> $i; $a {

    for 0 .. Inf; "a" .. "z" x 1000 as $i; $a {

would be seen as a counterexample by some.




> Similarly, if we make a word to mean to explicitly break
> out of a topicalizer, it should not be last. I'd suggest break!

> So it looks to me like we need a break.

I'm glad Larry didn't suggest 'done', because I really enjoyed Apo4.
I'll suggest it instead.




> I also happen to think that Exception is too long a name to
> prefix most common exceptions...

>    c::NEXT

Based purely on visual impact, c:: seems best.

Perhaps 'when', or CATCH, could cause the parser to automatically
try an Error:: (or Exit:: or whatever) class prefix when it encounters a
classname.




> KEEP blocks would only be executed if the block succeeded.
> UNDO blocks would only be executed if the block failed.

What defines success? I sometimes raise exceptions to signal
that I'm done, with success, and it's time to wrap up and go back
to some calling code several levels up the stack. But I guess this
is an unusual case so not being able to use KEEP and UNDO
as intended is OK.

Or maybe each block has a Success class exception object
associated with it unless a different exception is raised, and
KEEP is called if the exception isa(Success). Then I can raise
a subclass of Success.



> However, X::Control exceptions (such as X::NEXT) are a
> subset of Exceptions
..
..
> Where exactly control exceptions fit in the class hierarchy is
> still open to debate

What about a change of perspective and terminology:

    Exit (or Flow)
        NEXT
        Exception

ie exeptions are a subset of the ways to exit a block.


--me

Reply via email to