[Bioperl-l] Perl 6 has 'roles' - may be cleanly applicable to the Root/RootI issue

Stephen Gordon Lenk slenk at emich.edu
Tue Oct 3 17:31:47 UTC 2006

I looked at the Perl6 site, there is an RFC on interfaces:

Roles seem to be the Perl 6 answer to the Root/RootI issue in Bioperl. 
Maybe it is too early to suggest this.

The primary role of a class is to manage instances, that is, objects. 
So a class must worry about object creation and destruction, and 
everything that happens in between. Classes have a secondary role as 
units of software reuse, in that they can be inherited from or 
delegated to. However, because this is a secondary role, and because 
of weaknesses in models of inheritance, composition, and delegation, 
Perl 6 will split out the notion of software reuse into a separate 
class-like entity called a "role". Roles are an abstraction mechanism 
for use by classes that don't care about the secondary aspects of 
software reuse, or that (looking at it the other way) care so much 
about it that they want to encapsulate any decisions about 
implementation, composition, delegation, and maybe even inheritance. 
Sounds fancy, but just think of them as includes of partial classes, 
with some safety checks. Roles don't manage objects. They manage 
interfaces and other abstract behavior (like default implementations), 
and they help classes manage objects. As such, a role may only be 
composed into a class or into another role, never inherited from or 
delegated to. That's what classes are for.

More information about the Bioperl-l mailing list