=pod =head1 NAME Built-in types and their extension =head1 DESCRIPTION (Sorry, just scribbled down for now, will fill out later) so, lets examine Array for a moment in isolation ... Array is defined as a role. Array does List (List being a role which provides the more "functional" things like &map, &grep, &reduce, etc.). So, we don't yet have a class(Array) only a role(Array), but before I define class(Array) I want to describe how role(Array) could be used. The role(Array) can be "does"-ed by other classes, which will give them class(Array) like behavior. This is instead of subclassing class(Array). So in all cases where you would want to subclass class(Array), you can does the role(Array) instead, and the results will be (almost) exactly the same. If you need MI, or something which really needs to be subclassed then you can hack it together with role(Array). the idea is that we create a class(Array) which implements the <[]> part, and then finalize that class basically forcing the "extension of built in types" to always be done using roles and the undef-but-behavioural ::Array in userland is proxy for _both_ I think we can make the $repr=nil classes deal with does() and is() in an approriate way =head1 SEE ALSO http://colabti.de/irclogger/irclogger_log/perl6?date=2006-01-18,Wed&sel=302#l538 =head1 AUTHOR Stevan Little =cut