Moose::Autobox::List - the List role


Moose-Autobox documentation Contained in the Moose-Autobox distribution.

Index


Code Index:

NAME

Top

Moose::Autobox::List - the List role

DESCRIPTION

Top

This is a role to describes a List interface. This is not meant to be any specific Perl type, but instead an interface that certain Perl types might implement. Currenly only Moose::Autobox::Array implements this.

METHODS

Top

reduce
zip
meta

REQUIRED METHODS

Top

head
tail
join
length
map
grep
reverse
sort

BUGS

Top

All complex software has bugs lurking in it, and this module is no exception. If you find a bug please either email me, or add the bug to cpan-RT.

AUTHOR

Top

Stevan Little <stevan@iinteractive.com>

COPYRIGHT AND LICENSE

Top


Moose-Autobox documentation Contained in the Moose-Autobox distribution.

package Moose::Autobox::List;
use Moose::Role 'with', 'requires';
use Moose::Autobox;

our $VERSION = '0.11';

with 'Moose::Autobox::Value';

requires 'head';
requires 'tail';
requires 'length'; 
requires 'join'; 
requires 'grep'; 
requires 'map'; 
requires 'sort';
requires 'reverse';

sub reduce {
    my ($array, $func) = @_;
    my $a = $array->values;
    my $acc = $a->head;
    $a->tail->map(sub { $acc = $func->($acc, $_) });
    return $acc;
}

sub zip {
    my ($array, $other) = @_;
    ($array->length < $other->length 
        ? $other 
        : $array)
            ->keys
            ->map(sub {
                [ $array->at($_), $other->at($_) ]
            });
}

1;

__END__