The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

FP::autobox

SYNOPSIS

    use FP::autobox;

    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.