On Thu, Feb 26, 2004 at 07:30:05PM +0100, Robin Berjon wrote:
: chromatic wrote:
: >With Apocalypse 12 (soon!)
: 
: I'm sorry but this just begs for the question: (vaguely) how soon? :)

Well, here's the rough outline.  I still have to do some writing on
multiple dispatch, overloading, and delegation, But it's shaping up
pretty well.  Should be to alpha state within a week or so, depending
on how much Real Lifeâ intrudes.  Then the sixperl cabal has to
hammer on it for a while to remove various intrinsic idiocies.

Overview
    Some of the problems with Perl 5 OO
        A little too orthogonal
        Not quite orthogonal enough
        Forced non-encapsulation
        A little too minimal
        Too much keyword reuse
        Too difficult to capture metadata
        Inside-out interfaces
        Not enough convention
        Wrong conventions
        Everything possible, but difficult
    Perl 5 non-problems
        Generating class by running code at compile time
        There are many roads to polymorphism
        People using a class shouldn't have to think hard
    Trust in convention, but keep your powder dry
Classes
    Philosophy
    Declaration
        Traits
    Use
    Class name semantics
    Private classes
Methods
    Philosophy
    Declaration
    Use
Class methods
    Class invocant
    Class|object invocant
Submethods
Attributes
    Philosophy
    Declaration
    Use
    Default values
Object construction
    The default constructor
    CREATE
    BUILDALL
    BUILD
    Eliminating redundancy in constructor calls
Object deconstruction
    DESTROYALL
    DESTROY
Dispatch mechanisms
    Single dispatch
    Multiple dispatch
    next Class, next Role, next Multi
    last Class, last Role, last Multi
    DISPATCHALL/DISPATCH
    CLASSWALK
The "multi" modifier
    Philosophy
    Declaration
    Use
Overloading
    method prefix:+
    method prefix:?
    method prefix:~
    etc.
Delegation
    Compile-time  method $:obj.foo()
    Run-time  method $:obj.*()
    Relationship to has
    Relationship to does
    Naming delegated methods
    Delegation of handlers through an array @:handlers.*()
    Anonymous delegation for isa emulation?
Class composition with Roles
    Philosophy
    declaration
    Use of Roles at compile time
    Use of Roles at run time (mixins)
Open vs closed classes
Collections of classes
    In classes
    In modules
Versioning
    Version declarations
    Use of version and author wildcards
Introspection
Other non-OO decisions

: I get all excited whenever I hear "Perl" and "six" in the same sentence, 
: and it's building up to be unbearable ;)

Yeah, well...it hurts at least as bad on this end.

Larry

Reply via email to