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

NAME

FP::Abstract::Show - data constructor protocol

SYNOPSIS

    package FPShowExample::Foo {
        sub new { my $class = shift; bless [@_], $class }
        sub FP_Show_show {
            my ($self, $show) = @_;
            # $show is for recursive use
            "FPShowExample::Foo->new(".join(", ",
                 map { $show->($_) } @$self).")"
        }
    }

    use FP::Show;

    is show(FPShowExample::Foo->new("hey", new FPShowExample::Foo 5+5)),
       "FPShowExample::Foo->new('hey', FPShowExample::Foo->new(10))";

DESCRIPTION

For an introduction, see FP::Show.

The reason that FP_Show_show is getting a $show argument is to provide for (probably evil, though) context sensitive formatting, but more importantly to hopefully enable to do pretty-printing and cut-off features (this is *alpha* though, see whether this works out).

TODO

Handle circular data structures.

Pretty-printing -- for this, probably move to returning FP::AST::Perl nodes instead of strings.

Declare that non-pretty-printing show must only print one line?

Cut-offs at configurable size

Configuration for whether to force promises

SEE ALSO

FP::Show -- functions to access this protocol usefully

FP::Mixin::Utils -- implemented by this protocol

NOTE

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