Haskell: algebraischer Datentyp
data List a = Nil | Cons a (List a)
Nil :: List a
Cons :: a -> List a -> List a
Java: Kompositum
interface List<A> { }
class Nil implements List<A> { }
class Cons<A> implements List<A> {
A head; List<A> tail;
}
Scala: case class