I've recently gotten into this style of programming:
given %some-hash {
if .<foo> {
.<bar> = .<baz> + .<austria>;
}
}
I keep thinking of it as a wonky kind of sigil, the .<> sigil, which has its very own variable namespace inside of the hash I've chosen as topic.
Now let's say that the above piece of code was part of a prototyped program which later evolved to use objects instead of sloppy hashes. Then the same code becomes even nicer:
given $some-object {
if .foo {
.bar = .baz + .austria;
}
}
The advantages of objects to hashes are immediate (and well-known):
.bar above) work is that attribute accessors can be made rw. The flip side of that is that one can omit the rw and avoid assignment accidents. That's also an improvement over the hash.All this is fairly trivial; I just think it's a nice syntax. But it is with this example that the truth finally sinks in: keeping $_ and self separate from each other in Perl 6 was a really good idea.
With the syntax Perl 6 settled on, it's like there are two topics in a method: the common one ($_), and the OO one (self). And each has wonderful shortcuts: with $_ you just use prefix:<.> as above, and with self, you can use $. or @. or %. ad lib. The OO form is slightly longer than the common form, since OO is more intricate (and less ubiquitous).
Long form Short forms
========= ===========
$_.foo .foo
self.foo $.foo
@.foo
%.foo
And since they're disjunct from each other, you never have to context-switch or worry about what it is you're looking at when you see .foo. Unless you explicitly mix the two together with given self or invocant $_ &8212; which you're entirely free to do, but remember that it only buys you one character.
As an added bonus, we can now re-write the code example in the rejected rfc 342 so that it works in today's Perl 6, without introducing extra syntax:
my $record = loadrecord($studentID);
given $record {
my $spam = open .minimum;
$spam.say: qq:to'SPAM';
Dear {.name}:
Your tuition is now due. Please send in a payment
of at least {.minimum}.
SPAM
};
I have been enjoying your P6 articles immensely.
Probably you, Jonatahan, & Nicholas are the authors I most eagerly look forward to reading.
Thank you very much.
Re:Very inneresting ...
masak on 2009-10-05T09:51:59
Thanks for the kind words. Writing blog posts is satisfying in itself, but hearing that people enjoy (let alone read) them makes it extra worthwhile.