Protocol using ^parameterize
use Protocol;
protocol FormattableKeys {
method keys { ... }
method formatted-keys { $.keys.join: ", " }
}
say FormattableKeys[];
say FormattableKeys[ProtocolClass];
say FormattableKeys[ProtocolSubset];
say FormattableKeys[ProtocolCoerce];
my FormattableKeys[ProtocolCoerce] $a = %( a => 1, b => 2 );
say $a;
say $a.formatted-keys;
multi sub a(FormattableKeys[ProtocolCoerce] $a) {
say $a + 1;
say $a.formatted-keys;
say $a.^name
}
a %(x => 1, y => 2, z => 3);INFO