"you don't have a function a: X x Y -> Z, you've got a function a: X -> (Y => Z)"
Haskell has products. What's the problem with f':
ghci> f x y = x + y
ghci> f' (x,y) = x + y
ghci> f 1 2
3
ghci> f' (1,2)
3
ghci> :t f'
f' :: Num a => (a, a) -> a
ghci> :t f
f :: Num a => a -> a -> a