On 1/20/06, Larry Wall <[EMAIL PROTECTED]> wrote: [snip really cool blathering]
I don't have much to say on the deeper question, but I have a few ideas on the P5 -> P6 translation question, especially as it relates to OO: 1) Don't translate at all. Ponie, delegating to Parrot, is supposed to handle all of that OO garbage in the same way that Ruby and Python are going to interact with Perl6. Perl5 and Perl6 are as similar as Ruby and Python, so you might as well write a translator between them as one between Perl5 and Perl6. Pros: Larry doesn't have to do anything more on the WMoT. Cons: The community, for some reason, really wants this auto-translator, even though there wasn't one for P4->P5 and P5->P6 is a greater leap than P4->P5 was. 2) Don't attempt to translate $x->{whatever} (or $x->[2] or $x->('whatever') ... ) in isolation. If it occurs within a function defined in a package that has a function that uses bless and it's the first parameter, it's an attribute access. Otherwise, it's a hash access. Pros: It's a nice and easy rule which will work if the programmer didn't violate encapsulation, only puts methods in classes, and is generally an all-around nice guy. Cons: See Pros. 3) Since about half of all classes in P5-land use some module in Class::* to auto-generate stuff (thus providing a nice place to find all the attribute names), ask the community to provide a translator for each of those. Then, use #2 for the others. Pros: The WMoT can punt in about half the cases. Cons: The WMoT cannot punt in about half the cases. Rob