[Haskell] Generic combination of generic types