1
knowhow NQPCurriedRoleHOW {
5
my $archetypes := Archetypes.new( :nominal(1), :composable(1), :parametric(1) );
10
method new(:$curried_role!, :@pos_args!) {
11
my $obj := nqp::create(self);
12
$obj.BUILD(:$curried_role, :@pos_args);
16
method BUILD(:$curried_role!, :@pos_args!) {
17
$!curried_role := $curried_role;
18
@!pos_args := @pos_args;
21
method new_type($curried_role!, *@pos_args) {
22
my $meta := self.new(:curried_role($curried_role), :pos_args(@pos_args));
23
nqp::newtype($meta, 'Uninstantiable');
26
method specialize($obj, $class_arg) {
27
$!curried_role.HOW.specialize($!curried_role, $class_arg, |@!pos_args);
31
$!curried_role.HOW.name($!curried_role)
34
method curried_role($obj) {