Miroslav Silovic wrote:
> TSa wrote:
>   
>>>   role Set[::T = Item] does Collection[T] where {
>>>       all(.members) =:= one(.members);
>>>   };
>>>       
>> Nice usage of junctions!
>>
>>     
>
> But buggy - one means *exactly* one. So for an array of more than 1 
> element, all(@array) never equals one(@array) - if they're all the same, 
> it's more than 1, otherwise it's 0.
>
>   

perl -MPerl6::Junction=one,all -le '@foo=qw(1 2 3 4); print "yes" if
(all(@foo) eq one(@foo))'
yes

Didn't test on pugs yet.

Sam.

> all(.members) =:= any(.members) would also not work, as it will try to 
> match each member with some other or same member of the array. It will 
> always return true, in other words, as each element of the array is 
> equal to itself.
>
> This leaves all(.members) =:= .members[0], possibly extra with 
> non-emptiness test.
>
>     Miro
>
>
>   

Reply via email to