Oh, what have I been up to recently? Exams, mainly. It's that time where the previous five years of my life comes down to a week of 3-hour sessions. Except, it doesn't. I came here to learn Japanese, and I've done that, so I'm not too bothered what happens this week and next. That said, the first two went reasonably well, even if I did too many questions for the first one.
I've been relaxing between exams by further hacking Perl 5 into Perl 6; I've got most of the support for the new variable semantics in place, and I'm ready to start on properties. It's actually quite tricky because $foo.{element}
dereferences the hashref $foo
and picks out the element, whereas %foo.{element}
gets the element from the hash - worse, $foo.prop
returns the property and $foo.method()
calls the method. So there's rather a lot of different things that .
does; many of them are of course what the old arrow operator did, so you can just do s/ARROW/DOTOP/g
on the grammar and have the tokeniser produce the relevant token, but it's knowing what to do with the various pieces of grammar once you've parsed them that's the tricky part.
Thankfully, actually trying to implement Perl 6 at this stage is quite a useful exercise because it turns up all sorts of useful nits: I can examine how Perl 5 treated a concept, and then I have to go back to Damian or Larry and ask them how it should translate to Perl 6. You turn up all sorts of things that people might not have thought of - things like, how should properties interpolate in strings? What about in regular expressions? (Yes, I've been fiddling with S_intuit_more
)
As an aside, I've been trying to work out a metric for reading perl6-language without the froth. At the end of the day, from an implementation point of view, the only people worth listening to are Larry and Damian. That being said, people who have been long-time perl5 porters have some experience both of how Larry works and how some of Perl's language design ought to feel. Filtering everyone else out removes a lot of the design-by-committee and design-by-wishlist elements of Perl 6, particularly those who really don't have much experience of how a language ought to work but have plenty of "good" ideas of how they'd like it to work. It also vastly reduces the traffic you have to follow, as amplitude is inversely proportional to aptitude. There are, of course, exceptions, but you won't lose anything by not making them.
For instance, we have one person who's spent a week pushing a feature that most people, when it was discussed, don't really see the need for. He's now produced a broken patch which provides a half-assed implementation of a cut-down version of the idea, and people are wondering why it won't be applied to Perl 5. I'm wondering why people aren't doing something more useful with their time.
Changing the subject entirely, I've got my hands on some great music software for my laptop, as well as a really nifty little USB MIDI interface so I can connect it up to my keyboard. Unfortunately, I'm travelling light this term and don't have my keyboard with me, but I have managed to get a little bit of composition done - mainly arrangements of the stuff I dreamt up in Japan, but it's a start after a long lack of activity. I've been considering doing composition as a full-time thing from next year, but we'll see. The equipment gets expensive and the returns are few, but it's a lot of fun. Maybe if my personal life gets less interesting, I'll have more time and money to spend on other people are more to spend on music.
So today I think I'm going to try and get the rest of this song written down, and maybe I'll try a bit of Perl 6 hackery too. Oh, maybe I should revise. But if I haven't learnt it in the past five years, is it worth learning it now?