Jonathan Lang <[EMAIL PROTECTED]> writes:

> Luke Palmer wrote:
>> Renaming methods defeats the purpose of roles.  Roles are like
>> interfaces inside-out.  They guarantee a set of methods -- an interface
>> -- except they provide the implementation to (in terms of other,
>> required methods).  Renaming the method destroys the interface
>> compatibility.
>
> Not so.  A role is more than an inside-out interface; it guarantees a set
> of methods either by calling it an error to not define a given method in a
> class that C<does> the role or by defining the method itself.  In the
> latter case, renaming the method can be quite useful; even in the former
> case, renaming or excluding methods from a role is useful if you want an
> interface which is almost, but not quite, like the one that the role
> provides.  

And examples of doing all of that are given in the original Traits
paper (and, for that matter, in the summary of Traits/Roles that I
wrote up for the summary.)

-- 
Beware the Perl 6 early morning joggers -- Allison Randal

Reply via email to