FP::Abstract::Pure - functional purity protocol


    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


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.


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