Есть ли в Haskell вариативные функции / кортежи?

Функция uncurry работает только для функций, принимающих два аргумента:

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

Если я хочу освободить функции с произвольным количеством аргументов, я мог бы просто напишите отдельные функции:

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

Но это быстро становится утомительно. Есть ли способ обобщить это, поэтому мне нужно написать только одну функцию?

24
задан fredoverflow 28 August 2011 в 12:25
поделиться