Haskell LanguageGeneralized Algebraic Data Types