 <p>Haskell has algebraic data types, which can describe structures or unions of structures such that something of a given type can hold one of a number of different sets of fields. These fields can set and accessed both positionally or via names with record syntax.</p> <p>See here: <a href="http://learnyouahaskell.com/making-our-own-types-and-typeclasses" rel="nofollow">http://learnyouahaskell.com/making-our-own-types-and-typeclasses</a></p>