Documentation for method new_type assembled from the following pages:

Class: Metamodel::ClassHOW §

From Metamodel::ClassHOW

(Metamodel::ClassHOW) method new_type §

method (:$name:$repr = 'P6opaque':$ver:$auth)

Creates a new type from the metamodel, which we can proceed to build

my $type = Metamodel::ClassHOW.new_type(name => "NewType",
                                        ver => v0.0.1,
                                        auth => 'github:perl6' );
$type.HOW.add_method($type,"hey"method { say "Hey" });
$type.hey;     # OUTPUT: «Hey␤» 
$type.HOW.compose($type);
my $instance = $type.new;
$instance.hey# OUTPUT: «Hey␤»

We add a single method by using Higher Order Workings methods, and then we can use that method directly as class method; we can then compose the type, following which we can create already an instance, which will behave in the exact same way.

Class: Metamodel::DefiniteHOW §

From Metamodel::DefiniteHOW

(Metamodel::DefiniteHOW) method new_type §

method new_type(:$base_type!:$definite!)

Creates a new definite type given a base type and definiteness. $definite should either be 1 for :D types or 0 for :U types.

Class: Metamodel::EnumHOW §

From Metamodel::EnumHOW

(Metamodel::EnumHOW) method new_type §

method new_type(:$name!:$base_type?:$repr = 'P6opaque':$is_mixin)

Creates a new type object for an enum. $name is the enum name, $base_type is the type given when the enum is declared using a scoped declaration (if any), and $repr is the type representation passed to the enum using the repr trait. $is_mixin is unused.

Class: Metamodel::PackageHOW §

From Metamodel::PackageHOW

(Metamodel::PackageHOW) method new_type §

Defined as:

method new_type(:$name = '<anon>':$repr:$ver:$auth)

Creates a new package, with optional representation, version and auth field.