[Haskell] Pattern Matching with rank-2 types