Parametric polymorphism: Difference between revisions

Content deleted Content added
Miks1965 (talk | contribs)
PascalABC.NET
 
Line 1,044:
 
{{omit from|Oforth|Oforth is nt statically-typed language}}
 
=={{header|PascalABC.NET}}==
<syntaxhighlight lang="delphi">
type Node<T> = auto class
data: T;
left,right: Node<T>;
end;
 
function CreateTree(n: integer): Node<integer>;
begin
if n = 0 then
Result := nil
else
Result := new Node<integer>(
Random(100),
CreateTree((n-1) div 2),
CreateTree(n-1 - (n-1) div 2)
);
end;
 
procedure InfixTraverse<T>(root: Node<T>; act: T -> ());
begin
if root = nil then
exit;
InfixTraverse(root.left,act);
act(root.data);
InfixTraverse(root.right,act);
end;
 
begin
var tree := CreateTree(10);
Println(tree);
InfixTraverse(tree, x -> Print(x));
end.
</syntaxhighlight>
{{out}}
<pre>
(58,(52,(3,nil,nil),(35,nil,(25,nil,nil))),(29,(3,nil,(50,nil,nil)),(2,nil,(86,nil,nil))))
3 52 35 25 58 3 50 29 2 86
</pre>
 
=={{header|Phix}}==