HaloO, Luke Palmer wrote:
I vaguely recall that we went over this already, but I forgot the conclusion if we did.
I have a proposal about block owner and block topic pending. But I guess no one noticed it, ...
In Damian and Larry's talk here at OSCON, I saw the example: if foo() -> $foo { # use $foo } 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.
I think of -> as the binder of the referential environment of the block/closure that follows. Without it the non block-owning special form if doesn't touch $_. It just flows into the block from outside. The other forms like for, while, given, etc. should behave the same. I would also require an explicit '-> $_ is rw' if you want the block to write to the caller's environment. Perhaps '-> :rw' is an abbreviation for a rw topic. This is the same logic as \:rw for rw ref creation. I like the very nicely huffmanized rw. It's short if you need/want it. -- $TSa.greeting := "HaloO"; # mind the echo!