Parametric polymorphism: Difference between revisions

no edit summary
(→‎{{header|Perl 6}}: marked incorrect)
No edit summary
Line 754:
'foofoo': ('barbar': (),'bazbaz': ())
</pre>
 
=={{header|Visual Prolog}}==
<lang prolog>
domains
tree{Type} = branch(tree{Type} Left, tree{Type} Right); leaf(Type Value).
 
class predicates
treewalk : (tree{X},function{X,Y}) -> tree{Y} procedure (i,i).
 
clauses
treewalk(branch(Left,Right),Func) = branch(NewLeft,NewRight) :-
NewLeft = treewalk(Left,Func), NewRight = treewalk(Right,Func).
 
treewalk(leaf(Value),Func) = leaf(X) :-
X = Func(Value).
 
run():-
init(),
X = branch(leaf(2), branch(leaf(3),leaf(4))),
Y = treewalk(X,addone),
write(Y),
succeed().
</lang>
 
 
 
 
 
 
{{omit from|C|no type variables in stdc}}
Anonymous user