haskell type declarations