【发布时间】:2011-11-05 11:07:48
【问题描述】:
uncurry 函数仅适用于采用两个参数的函数:
uncurry :: (a -> b -> c) -> (a, b) -> c
如果我想对具有任意数量参数的函数进行 uncurry,我可以编写单独的函数:
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
但这很快就会变得乏味。有什么方法可以概括这个,所以我只需要写一个函数吗?
【问题讨论】:
-
不是那样,但无论如何,你为什么要这样做?根据我的经验,在极少数情况下您需要的不仅仅是 uncurry2
-
@Paul:没有具体的原因,但是当我看到任何一种重复的模式时,我就会问自己如何概括和抽象出来。
标签: function haskell tuples currying variadic