Haskell tem funções / tuplas variadas?

Ouncurry função @ funciona apenas para funções com dois argumentos:

uncurry :: (a -> b -> c) -> (a, b) -> c

Se eu quiser cancelar a função de funções com um número arbitrário de argumentos, eu poderia apenas escrever funções separadas:

uncurry2 f (a, b)          = f a b
uncurry3 f (a, b, c)       = f a b c
uncurry4 f (a, b, c, d)    = f a b c d
uncurry5 f (a, b, c, d, e) = f a b c d e

Mas isso fica entediante rapidamente. Existe alguma maneira de generalizar isso, então eu só tenho que escrever uma função?

questionAnswers(3)

yourAnswerToTheQuestion