Re: Announcement: Moose 2.0800 is released!

[email protected] (Kent Fredric)
Newsgroups perl.moose
Message-ID <CAATnKFCZ8OE78RHwqT-WJr9qE4E+2S74fvxg-kDCFxKAVDqBoQ@mail.gmail.com>
On 30 March 2013 08:10, Chris Prather <[email protected]> wrote:
> Excludes specifically (silently) encourages people to break the
> contract nature (allomorphism?) of Roles. That is you can suddenly no
> longer have an API that the Role claims you *should* have because you
> excluded the method on composition. Additionally the excludes/alias
> feature *only* exists for Roles in the core.

That sounds like the usage of alias/excludes should have a default
stricture that they may be only used if-and-only-if  doing so doesn't
break the role criteria.

So alias/excluding "foo" out of the picture should add a < requires
foo > equivalent to the role that has to be resolved at some later
stage somehow.

at least, that way, people can use it for "useful" purposes without it
resulting in an interface contract breach.

Sample Usage Might be:

-

package A;
use Moose::Role;

sub foo { };

-

package B;
use Moose::Role;
with 'B' => { excludes => [ 'foo' ] }

-
package C;
use Moose;
with 'B;  # C must declare 'foo'

-

Or with Aliases;


-

package A;
use Moose::Role;

sub foo { };

-

package B;
use Moose::Role;
with 'B' => { alias => { 'foo' => 'A_Foo' } }

sub B_Foo { }

-
package C;
use Moose;
with 'B;  # C must declare 'foo'

sub foo {  $_[0]->A_Foo  + $_[0]->B_Foo }




-- 
kentnl
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.