Parametric polymorphism: Difference between revisions

add Perl 6 entry
m (+Icon+Unicon)
(add Perl 6 entry)
Line 270:
| Empty -> Empty
| Node (x,l,r) -> Node (f x, map_tree f l, map_tree f r)</lang>
=={{header|Perl 6}}==
<lang perl6>role BinaryTree[::T] {
has T $!value;
has BinaryTree[T] $.left;
has BinaryTree[T] $.right;
 
method replace-all(T $value) {
$!value = $value;
$.left.?replace-all($value);
$.right.?replace-all($value);
}
}
 
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;</lang>
 
=={{header|Scala}}==
Anonymous user