An abstract data type is a type with associated operations, but whose representation is hidden... source: wiki.haskell.org