Haskell: 去除 liftM2 中的括号

Haskell: get rid of parentheses in liftM2

如何在不引入新名称的情况下去掉标有^的括号? (如果能分成多行就更好了)

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

您可以使用 $ 删除最后一个,但如果不引入新名称,显然不能删除另一个。更好的解决方案可能是使用这样一个事实,即任何 Monad m 也应该是 ApplicativeFunctor(并且 成为 GHC 7.10)

你的例子就变成了

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

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