Specio::Constraint::Parameterizable - A class which represents parameterizable constraints
version 0.42
my $arrayref = t('ArrayRef'); my $arrayref_of_int = $arrayref->parameterize( of => t('Int') );
This class implements the API for parameterizable types like ArrayRef and Maybe.
ArrayRef
Maybe
This class implements the same API as Specio::Constraint::Simple, with a few additions.
This class's constructor accepts two additional parameters:
parameterized_constraint_generator
This is a subroutine that generates a new constraint subroutine when the type is parameterized.
It will be called as a method on the type and will be passed a single argument, the type object for the type parameter.
This parameter is mutually exclusive with the parameterized_inline_generator parameter.
parameterized_inline_generator
This is a subroutine that generates a new inline generator subroutine when the type is parameterized.
It will be called as a method on the Specio::Constraint::Parameterized object when that object needs to generate an inline constraint. It will receive the type parameter as the first argument and the variable name as a string as the second.
This probably seems fairly confusing, so looking at the examples in the Specio::Library::Builtins code may be helpful.
This parameter is mutually exclusive with the parameterized_constraint_generator parameter.
This method takes two arguments. The of argument should be an object which does the Specio::Constraint::Role::Interface role, and is required.
of
The other argument, declared_at, is optional. If it is not given, then a new Specio::DeclaredAt object is creating using a call stack depth of 1.
declared_at
This method returns a new Specio::Constraint::Parameterized object.
Bugs may be submitted at https://github.com/houseabsolute/Specio/issues.
I am also usually active on IRC as 'autarch' on irc://irc.perl.org.
irc://irc.perl.org
The source code repository for Specio can be found at https://github.com/houseabsolute/Specio.
Dave Rolsky <autarch@urth.org>
This software is Copyright (c) 2012 - 2017 by Dave Rolsky.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)
The full text of the license can be found in the LICENSE file included with this distribution.
To install Specio, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Specio
CPAN shell
perl -MCPAN -e shell install Specio
For more information on module installation, please visit the detailed CPAN module installation guide.