Haskell:摆脱liftM2中的括号

Not*_* ID 4 haskell

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

liftM2 (+) (somefunc arg1 (get arg2)) (somefunc arg3 (get arg3))
           ^                        ^ ^                        ^
                                     -
Run Code Online (Sandbox Code Playgroud)

Sar*_*rah 16

您可以通过使用$来删除最后一个,但是如果不引入新名称,则显然不能删除另一个.一个更好的解决办法可能是使用的事实,任何Monad m也应该是ApplicativeFunctor(和是,来GHC 7.10)

你的榜样就变成了

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

(+) <$> somefunc arg1 (get arg2) <*> somefunc arg3 (get arg3)
Run Code Online (Sandbox Code Playgroud)

  • 即使在此期间,你也可以使用`return f \`ap \`x \`ap \`y`来表示`f <$> x <*> y` (3认同)