通常我发现我想要组合两个函数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
...
最多有一些合理数量的参数
.:
,因为这比设置库并导入那个函数需要更少的字符。如果我需要.::
,那么我会引入该库。另一个有趣的细节是,.:
运算符是fmap fmap fmap
的更具体版本,其类型为(Functor f, Functor g) => (a -> b) -> f (g a) -> f (g b)
,可以在类似于(+1) .: [Just 1, Nothing] === [Just 2, Nothing]
的有用情况下使用。 - bheklilr