Parametric polymorphism: Difference between revisions

Content added Content deleted
No edit summary
Line 251: Line 251:
11.21 11.21 11.21
11.21 11.21 11.21
11.22 11.22 11.22</pre>
11.22 11.22 11.22</pre>

=={{header|Dart}}==
<lang dart>class TreeNode<T> {
T value;
TreeNode<T> left;
TreeNode<T> right;
TreeNode(this.value);
TreeNode map(T f(T t)) {
var node = new TreeNode(f(value));
if(left != null) {
node.left = left.map(f);
}
if(right != null) {
node.right = right.map(f);
}
return node;
}
void forEach(void f(T t)) {
f(value);
if(left != null) {
left.forEach(f);
}
if(right != null) {
right.forEach(f);
}
}
}

void main() {
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.right = new TreeNode(4);

print('first tree');
root.forEach(print);
var newRoot = root.map((t) => t * 222);
print('second tree');
newRoot.forEach(print);
}</lang>
{{out}}
<pre>first tree
1
2
4
3
second tree
222
444
888
666</pre>


=={{header|E}}==
=={{header|E}}==