Parametric polymorphism: Difference between revisions
Content added Content deleted
m (+Icon+Unicon) |
(add Perl 6 entry) |
||
Line 270: | Line 270: | ||
| Empty -> Empty |
| Empty -> Empty |
||
| Node (x,l,r) -> Node (f x, map_tree f l, map_tree f r)</lang> |
| 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}}== |
=={{header|Scala}}== |