Dave Cross: Still Munging Data With Perl: Online event - Mar 17 Learn more

NAME

FP::autobox

SYNOPSIS

is [12,4,2]->product, 96;
my $arr = [55,10];
is ref($arr), "ARRAY";
use FP::Div ":all"; use FP::Ops ":all";
is $arr->map(\&inc)->reduce(\&add), 67;
# Calling methods on arrays 'consumes' the arrays, i.e. makes them
# blessed and immutable (TODO: offer a FP::autobox::mutable or
# so?):
is ref($arr), 'FP::_::PureArray';
is( (eval { $arr->[0]++; 1 } || regex_substitute(sub{s/\s*at .*//s}, $@)),
'Modification of a read-only value attempted' );
is $$arr[0], 55;

DESCRIPTION

Wouldn't it be cool if an ordinary Perl array could be used as an FP::Abstract::Sequence? Autobox delivers on that.

This uses autobox underneath. This module does bless the arrays, so that method calls other than in the lexical scope of the autobox import work, too.

TODO

This could be extended to support methods on strings, once a FP::String module has been implemented, and on hashes for a to-be implemented FP::Abstract::HashMap protocol.

SEE ALSO

FP::PureArray, which is transparently loaded to provide the methods.

NOTE

This is alpha software! Read the status section in the package README or on the website.