FP::SortedPureArray
use FP::PureArray; use FP::SortedPureArray; use FP::Equal qw(is_equal); use FP::Ops qw(real_cmp); my $a1 = purearray(10, 40, 50, 50, 60); # This re-blesses $a1, too ($a1 and $s1 are the same object), so # it's not a functional operation, but then it shouldn't be # damaging either, or so one hopes...: my $s1 = $a1->as_sorted_by(\&real_cmp); is_equal [ $s1->perhaps_binsearch(40) ], [40]; is_equal [ $s1->perhaps_binsearch(41) ], []; ok $s1->checks_ok; *real_sortedpurearray = sortedpurearray_by(\&real_cmp); my $vs = real_sortedpurearray(10, 40, 50, 50, 60); is_equal [ $vs->perhaps_binsearch(40) ], [40]; is_equal [ $vs->perhaps_binsearch(41) ], []; ok $vs->checks_ok; # For performance reasons, the constructor does *not* sort the # values or check whether the values are actually sorted. my $bad = real_sortedpurearray(10, 50, 40, 60); # But that check can be run explicitly: ok not $bad->checks_ok; ok real_sortedpurearray(10, 50, 50, 60)->checks_ok; is sortedpurearray_by(\&real_cmp)->(10,10)->checks_ok, 1; is sortedpurearray_by(\&real_cmp)->(20,10)->checks_ok, ''; is sortedpurearray_by(\&real_cmp)->(3,10)->checks_ok, 1;
A sorted FP::PureArray. Has all the methods of the latter, plus currently just `perhaps_binsearch`.
So, this is very much unfinished and deserves more methods and constructors, as well as possibly a protocol (FP::Abstract::*).
FP::PureArray, that this inherits from.
This is alpha software! Read the status section in the package README or on the website.
To install FunctionalPerl, copy and paste the appropriate command in to your terminal.
cpanm
cpanm FunctionalPerl
CPAN shell
perl -MCPAN -e shell install FunctionalPerl
For more information on module installation, please visit the detailed CPAN module installation guide.