The Perl 6 design team met by phone on 20 September 2006. Larry, Patrick,
and Nicholas attended. These are the minutes.
Patrick:
- Weather is getting back to normal now.
- Had been the worst drought since the '50s.
- Temperatures were in the low 100s, now down to the 80s
- Now raining once a week
Nicholas:
- When I was in LA in July it was hitting the 100s and the power grid
didn't like it. What happens in Texas?
Patrick:
- Temperatures in the 100s are expected; the grid is built to cope.
- Texas doesn't have energy problems. We get California to pay for our
infrastructure
Larry laughed.
Patrick:
- Can I ask a question of your design sense?
- I've used the compile time traits as decorators on things.
- Is this bad, or can I do it more liberally
- This is for operators such as infix &&
- Lot of languages have that, would be good if the PAST node structure
could express that. If a language says I have infix && as one of my
tokens - it is OK to translate that to a PAST node that also says
"this short circuits"?
- this would saves having to write a transformation rule that handles
this before it hits an AST
- Already we can say left, right, chain associative - can we also put
traits that say "oh it short circuits"?
Larry:
- Is this there in lieu of something else that ought to be there, such
as thunks?
- Thunks are a level of laziness - "this is a thing that I'll tell you
when you can evaluate it."
- Tend to discourage these in Perl 6 except for &&
- The danger is that people put declarations in the thunk block, and
expect that it gets executed, when often it does not.
- In Perl 5 terms, my $x if 0;
- In Perl 6 tend to encourage people to use explicit curlies for that
sort of thing. But for general AST you would want to support those sort of constructs.
- Probably a property of the particular arguments not the property
itself
- It's really call by name
Patrick:
- Moving away from short circuiting other compiler specific things that
we'd like to put inside the grammar file that aren't naturally part of
the AST...
- Traits seem natural, for example
inline
Larry:
- Would like to see a lot of this being in a subset of Perl 6.
- Any syntax you'd like to borrow from Perl 6 is fine
Patrick:
- How much leeway do I have?
Larry:
- I'd say that you have considerable leeway.
- Get support from Perl 6 framework by some modules that define those
traits
- The original Perl 6 properties idea was that if you mentioned it then
it springs into existence, but we decided that was a bad idea.
Patrick:
- That's how compiler works. [The original Perl 6 way]
Larry:
- Could define some sort of auto traits that auto-load.
- But with Perl 6 we went with wanting to have predeclared traits,
even if just for typo checking
Patrick:
- Discussion on #parrot - compiler writers all liked the idea of having
traits
- Felt natural.
Larry:
- Like Audrey says, "improvise".
- I don't see any big problem with this.
Patrick:
- The consensus is "Would be really nice if compiler tools already
handled this for us"
- This gives other optimisation possibilities down the road.
Larry:
- Only concern would be divergence from Perl 6 trait syntax.
- Specifically thinking about diverging by not having angle brackets and
colon
Patrick:
- Perl 6 compiler will only support the Perl 6 way
Larry:
- Just don't get trapped in a hole
Patrick:
- Will always resolve in favour of the Perl 6 way
- I'm working on the PAST implementation and compiler tools refactor
- Pleased with direction, no so pleased with speed, but other things
holding me back are now gone, so looking forward to next week
Larry:
- Working on a semantic bugbear. Working over the grammar, really high
level stuff.
- Would be nice if at some point this reconnects [with the current
implementations]