On 8/4/05, Luke Palmer [EMAIL PROTECTED] wrote:
How can that possibly work? If a bare closure { } is equivalent to -
?$_ is rw { }, then the normal:
if foo() {...}
Turns into:
if foo() - ?$_ is rw { }
And every if topicalizes! I'm sure we don't want that.
Luke
Here's one solution:
1) Bare blocks don't topicalise if you call them without an argument.
2) 'if' doesn't pass the value of the condition to its body, _UNLESS_
the body is incapable of accepting 0 arguments.
This means:
* The most common case, if foo() { ... }, won't topicalise.
* If you /really/ want to access the value of the conditional, you can
say one of:
if foo() - $_ { ... }# topicalise
if foo() - $cond { ... } # don't topicalise
and 'if' will give it to you.
* The bare-block-to-pointy-sub rewrite rule is preserved, because a
bare block's parameter is optional.
Is there anything I've failed to take into account?
Stuart