Perl 6 Design Minutes for 27 January 2010
The Perl 6 design team met by phone on 27 January 2010. Larry, Allison, Patrick, and chromatic attended.
Larry:
- tweaked definition of when a series operator is considered infinite
- nailed down more list assignment semantics with respect to interators
- clarified how
($a, $b, @a) = 1..*
works -
KeyWeight
deletion criterion kept consistent with otherKeyHash
types - negative keyweights are allowed to fail at pick time
- "mostly eager" now assumes unknown closure generators are probably infinite
- random whackage on
List
,Seq
,Parcel
,Capture
,Iterator
,Nil
etc. -
List
is now simply the iterator role, and doesn't doPositional
-
Seq
takes overPositional
duties for reified (or reifiable) value lists - think of
Seq
now as a constantArray
(but also lazy likeArray
) -
Iterable
now means you can ask for an iterator, but doesn't doList
-
Array
,Seq
, etc doIterable
, but notList
- only actual iterators do
List
-
Nil
is defined as a suitable sentinel for both list and slice iterators - continued to rethink that with pmichaud++ et al
- we'll probably end up with an
EMPTY
special exception object to be the iterator sentinal - proposed an
E
operator to go with it to make testing forEMPTY
across multiple iterators very fast - other than that, mostly just bug whacking, no major refactors
- still thinking about doing real LTM for STD
- did lazify
Cursor
's fnum->fate translations for shorter LTM candidates in preparation for smarter LTM - we don't need special objects for the items that get matches
- we do need to think more about the hyper cases
- how to do list processing using balanced trees of delegated sub refs
- don't want to build in serial assumptions where we don't need them
Patrick:
- made the Rakudo #25 release last week
- it was much easier to make the release than explain what we were planning to do instead
- also working on iterators and lists
- NG branch is blocking on that
- worked on the design in my head for three weeks
- realized that we were doing iterators completely wrong the other night
- Larry's making some useful changes to the spec in response
- there are still some unclear spots in the spec
- we need an implementation to figure those out
- my biggest question is the relationship between
List
,Parcel
,Itertor
, and array - as of this morning, I think I have it
- that code seems to be working and efficient
- so far it's working well
- continuing with that
- wrote a very short range iterator prototype that colomon has used
- also write a
map
iterator that works - coming up with examples for the
zip
operator was nice - good ideas for what we need to be able to do
- objects that can iterate have a
.iterator()
method - to interpolate that into a list,
.list()
returns a flatParcel
for that iterator -
Parcel
s know how to generateIterator
s - those know how to handle
Iterator
s ofIterator
s - I suspect that's how we do hyper iteration
- change
Parcel
s to understand that - adding pieces back into the ng branch
- next I have to fix slurpy parameters
- many of our builtins need that
- need to figure out Jonathan's code to do that
- after that, I'll do arrays
- that should remove the blockers on the ng branch
Allison:
- working on Pynie
- Francois has helped greatly to update it for Plumage
c:
- still working on the TT #389 fix
- think I have the right design, just need time to implement it
- working on a potential new time for #parrotsketch
Allison:
- thinking about hackathons
- would be nice to have a Rakudo hackathon at YAPC::NA
c:
- Parrot will come up; didn't it come up about half the time last year?
Patrick:
- it was all Parrot
Allison:
- you'll have an influx of Rakudo interest two months after Rakudo Star
Patrick:
- probably will have one before then
- but can tell people "Go to YAPC; we'll show you how to help in person there"