Specio::Constraint::Parameterizable(3) User Contributed Perl Documentation Specio::Constraint::Parameterizable(3)

# [SYNOPSIS](#SYNOPSIS)

```
    my $arrayref = t('ArrayRef');
    my $arrayref_of_int = $arrayref->parameterize( of => t('Int') );
```

# [DESCRIPTION](#DESCRIPTION)

This class implements the API for parameterizable types like "ArrayRef" and "Maybe".

# [API](#API)

This class implements the same API as Specio::Constraint::Simple, with a few additions.

## [Specio::Constraint::Parameterizable-&gt;new(...)](#Specio::Constraint::Parameterizable)

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.

## [$type-&gt;parameterize(...)](#$type)

This method takes two arguments. The "of" argument should be an object which does the Specio::Constraint::Role::Interface role, and is required.

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.

This method returns a new Specio::Constraint::Parameterized object.

2026-07-17 perl v5.44.0

---

Document: Specio::Constraint::Parameterizable(3pm) from perl-specio 0.53-r5 (Chainguard OS)
Source: https://github.com/houseabsolute/Specio
