Haskell: algebraischer Datentyp
data Tree a = Leaf a | Branch (Tree a) (Tree a) Leaf :: a -> Tree a Branch :: Tree a -> Tree a -> Tree a
Java: Kompositum
interface Tree<A> { } class Leaf<A> implements Tree<A> { A key; } class Branch<A> implements Tree<A> { Tree<A> left; Tree<A> right; }
(Scala: case class)