[Haskell-cafe] type level function with different return kinds