NAME
FP::Interface - implement an interface
SYNOPSIS
Also see FP::Interfaces.
{
package FP::Abstract::Sequence;
sub FP_Interface__method_names {
qw(fold)
}
}
{
package FP::Abstract::ExtendedSequence;
use base qw(FP::Abstract::Sequence);
sub FP_Interface__method_names {
my $class = shift;
(qw(sum), $class->SUPER::FP_Interface__method_names)
}
}
{
package Foo;
sub foo { }
sub fold { }
use FP::Interface;
FP::Interface::implemented qw(FP::Abstract::ExtendedSequence);
FP::Interface::implemented qw(FP::Abstract::Pure);
# but, the recommended way is to instead:
use FP::Interfaces;
FP::Interfaces::implemented qw(FP::Abstract::ExtendedSequence
FP::Abstract::Pure);
# FP::Interface*::implemented add the given arguments to @ISA
# and check that the methods required by those interfaces are
# actually implemented. It issues warnings for missing methods,
# in this case that 'sum' is not implemented.
}
DESCRIPTION
SEE ALSO
This implements: FP::Abstract::Interface
NOTE
This is alpha software! Read the status section in the package README or on the website.