Функция 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
Но это становится утомительно быстро. Есть ли способ обобщить это, так что мне нужно написать только одну функцию?