Haskell:摆脱liftM2中的括号

时间:2015-02-15 08:53:04

标签: haskell

如何在不引入新名称的情况下删除标有^的括号? (如果它可以分成多行,则更好)

liftM2 (+) (somefunc arg1 (get arg2)) (somefunc arg3 (get arg3))
           ^                        ^ ^                        ^
                                     -

1 个答案:

答案 0 :(得分:16)

您可以使用$删除最后一个,但是如果不引入新名称,则无法删除另一个。一个更好的解决方案可能是使用以下事实:任何Monad m也应该是ApplicativeFunctor(并且,来GHC 7.10)

然后你的例子变成了

import Control.Applicative ((<$>), (<*>))

(+) <$> somefunc arg1 (get arg2) <*> somefunc arg3 (get arg3)