NAME

FP::Abstract::Pure - functional purity protocol

SYNOPSIS

    use FP::List;
    my $v= list(1); # or any other data structure that implements
                    # FP::Abstract::Pure
    is UNIVERSAL::isa($v, "FP::Abstract::Pure"), 1;
    # Or use Safe::Isa instead of UNIVERSAL::isa, but I don't understand
    # why overriding isa is useful (why fake inherit as opposed to real
    # inheriting but then shadowing what needs to be shadowed? NEXT method
    # and that needs to be supported in mock classes? TODO figure out.)

    # but usually:
    use FP::Predicates;
    is_pure ($v) # true if $v does (officially) not support mutation

DESCRIPTION

Base class for all data structures that don't allow mutation (by ordinary programs), i.e. are persistent.

More precisely, those objects that don't have methods that when called make other methods non-functions.

NOTE

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