RosettaCodeData/Task/Parametric-polymorphism/Perl-6/parametric-polymorphism.pl6

21 lines
507 B
Raku
Raw Permalink Normal View History

2013-04-10 23:57:08 -07:00
role BinaryTree[::T] {
2014-01-17 05:32:22 +00:00
has T $.value;
2013-04-10 23:57:08 -07:00
has BinaryTree[T] $.left;
has BinaryTree[T] $.right;
method replace-all(T $value) {
$!value = $value;
2014-01-17 05:32:22 +00:00
$!left.replace-all($value) if $!left.defined;
$!right.replace-all($value) if $!right.defined;
2013-04-10 23:57:08 -07:00
}
}
class IntTree does BinaryTree[Int] { }
my IntTree $it .= new(value => 1,
left => IntTree.new(value => 2),
right => IntTree.new(value => 3));
$it.replace-all(42);
say $it.perl;