develooper Front page | perl.perl6.language | Postings from May 2008

Re: "All classes imply the existence of a role of the same name."

Thread Previous | Thread Next
From:
Brandon S. Allbery KF8NH
Date:
May 3, 2008 12:31
Subject:
Re: "All classes imply the existence of a role of the same name."

On 2008 May 3, at 6:25, Richard Hainsworth wrote:

> - if u want to add a role to an existing object, perl wraps the  
> object into a class, adds the role, reinstantiates the object.

As I understand it, Perl inserts a new anonymous class as the object's  
parent, and adds the role to that.  The object isn't reinstantiated or  
otherwise modified, just reparented.

As for the assertion in the subject:  one could conceptually see a  
class being composed of a "role part" and a "class part".  Using the  
object as a role would invoke only the "role part".  (I would prefer  
some kind of indication that this is intended, e.g. a cast or maybe an  
adverb selecting the role.)

> It seems to me that the jargon of 'inheritance' normally applied to  
> a relation between objects and classes is misplaced in perl6. It is  
> rather classes 'inherit' roles (like animals inherit genes from  
> parents). Objects emerge as

You're just using the wrong model, I think.  You need to look at the  
Smalltalk/OREXX/Ruby mixin model, in which you can mix new parents  
into individual objects; not the C++/Java model where an object has a  
fixed class that defines its "shape" and any inheritance must be done  
as part of that class or its superclasses.

-- 
brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery@kf8nh.com
system administrator [openafs,heimdal,too many hats] allbery@ece.cmu.edu
electrical and computer engineering, carnegie mellon university    KF8NH



Thread Previous | Thread Next


Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About