Dependent Type In Haskell