このuncurry
関数は、次の2つの引数を取る関数に対してのみ機能します。
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
しかし、これはすぐに面倒になります。これを一般化する方法はありますか?1つの関数を書くだけで済みますか?