Haskell has extensive support for types, and allows programmers to create new types in a number of useful ways.