【发布时间】:2014-05-14 19:34:50
【问题描述】:
我经常发现我想组合两个函数 f 和 g,但 g 需要多个参数。 Haskell 是否为此提供了一组运算符(我知道我可以自己编写,但它似乎相当普遍,我不想复制 Haskell 中已经存在的运算符)
比如
(.@) = (.)
(.@@) f g x1 x2 = f $ g x1 x2
(.@@@) f g x1 x2 x3 = f $ g x1 x2 x3
(.@@@@) f g x1 x2 x3 x4 = f $ g x1 x2 x3 x4
...
最多合理数量的参数
【问题讨论】:
-
您可能对composition 库感兴趣
-
你能举个具体的例子吗?
-
@bheklilr 谢谢,这就是我正在寻找的答案。它是 (.:) (.::) 等。我尝试使用谷歌搜索“haskell compose function multiple arguments”,但谷歌没有提供任何有用的链接
-
@dspyz 没问题。老实说,我通常只在需要时在我的代码中定义
.:,因为它需要的字符比设置库和导入那个函数要少。如果我需要.::,那么我会拉入图书馆。另一个有趣的消息是.:运算符是fmap fmap fmap的更具体版本,其类型为(Functor f, Functor g) => (a -> b) -> f (g a) -> f (g b),可用于(+1) .: [Just 1, Nothing] === [Just 2, Nothing]等有用的情况。
标签: haskell operators variadic-functions currying function-composition