{
    "mode": "perldoc",
    "parameter": "Specio::Constraint::Parameterizable",
    "section": "",
    "url": "https://www.chedong.com/phpMan.php/perldoc/Specio%3A%3AConstraint%3A%3AParameterizable/json",
    "generated": "2026-06-10T16:29:39Z",
    "synopsis": "my $arrayref = t('ArrayRef');\nmy $arrayrefofint = $arrayref->parameterize( of => t('Int') );",
    "sections": {
        "NAME": {
            "content": "Specio::Constraint::Parameterizable - A class which represents parameterizable constraints\n",
            "subsections": []
        },
        "VERSION": {
            "content": "version 0.47\n",
            "subsections": []
        },
        "SYNOPSIS": {
            "content": "my $arrayref = t('ArrayRef');\n\nmy $arrayrefofint = $arrayref->parameterize( of => t('Int') );\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "This class implements the API for parameterizable types like \"ArrayRef\" and \"Maybe\".\n",
            "subsections": []
        },
        "API": {
            "content": "This class implements the same API as Specio::Constraint::Simple, with a few additions.\n\nSpecio::Constraint::Parameterizable->new(...)\nThis class's constructor accepts two additional parameters:\n\n*   parameterizedconstraintgenerator\n\nThis is a subroutine that generates a new constraint subroutine when the type is\nparameterized.\n\nIt will be called as a method on the type and will be passed a single argument, the type\nobject for the type parameter.\n\nThis parameter is mutually exclusive with the \"parameterizedinlinegenerator\" parameter.\n\n*   parameterizedinlinegenerator\n\nThis is a subroutine that generates a new inline generator subroutine when the type is\nparameterized.\n\nIt will be called as a method on the Specio::Constraint::Parameterized object when that\nobject needs to generate an inline constraint. It will receive the type parameter as the\nfirst argument and the variable name as a string as the second.\n\nThis probably seems fairly confusing, so looking at the examples in the\nSpecio::Library::Builtins code may be helpful.\n\nThis parameter is mutually exclusive with the \"parameterizedconstraintgenerator\"\nparameter.\n\n$type->parameterize(...)\nThis method takes two arguments. The \"of\" argument should be an object which does the\nSpecio::Constraint::Role::Interface role, and is required.\n\nThe other argument, \"declaredat\", is optional. If it is not given, then a new\nSpecio::DeclaredAt object is creating using a call stack depth of 1.\n\nThis method returns a new Specio::Constraint::Parameterized object.\n",
            "subsections": []
        },
        "SUPPORT": {
            "content": "Bugs may be submitted at <https://github.com/houseabsolute/Specio/issues>.\n\nI am also usually active on IRC as 'autarch' on \"irc://irc.perl.org\".\n",
            "subsections": []
        },
        "SOURCE": {
            "content": "The source code repository for Specio can be found at <https://github.com/houseabsolute/Specio>.\n",
            "subsections": []
        },
        "AUTHOR": {
            "content": "Dave Rolsky <autarch@urth.org>\n",
            "subsections": []
        },
        "COPYRIGHT AND LICENSE": {
            "content": "This software is Copyright (c) 2012 - 2021 by Dave Rolsky.\n\nThis is free software, licensed under:\n\nThe Artistic License 2.0 (GPL Compatible)\n\nThe full text of the license can be found in the LICENSE file included with this distribution.\n",
            "subsections": []
        }
    },
    "summary": "Specio::Constraint::Parameterizable - A class which represents parameterizable constraints",
    "flags": [],
    "examples": [],
    "see_also": []
}