Haskell:MonadPlus m=>;Bool->;a->;MA)有用吗?
之后,我受到了玩FizzBuzz的启发,发现自己需要一些功能:Haskell:MonadPlus m=>;Bool->;a->;MA)有用吗?,haskell,monadplus,Haskell,Monadplus,之后,我受到了玩FizzBuzz的启发,发现自己需要一些功能: mwhen :: MonadPlus m => Bool -> a -> m a mwhen b = if b then return else const mzero 这样我就可以做mwhen(n/?3)“Foo”`mappend`mwhen(n/?5)“Bar” 我原以为会在胡格尔街上,但是 这难道不像我想象的那么有用吗?它不存在的一个原因是,通常不需要这个组合器。你可以简单地用覆盖时a的结果,并且通常在时a
mwhen :: MonadPlus m => Bool -> a -> m a
mwhen b = if b then return else const mzero
这样我就可以做mwhen(n/?3)“Foo”`mappend`mwhen(n/?5)“Bar”
我原以为会在胡格尔街上,但是
这难道不像我想象的那么有用吗?它不存在的一个原因是,通常不需要这个组合器。你可以简单地用
覆盖时a的结果,并且通常在时a后有许多其他的一元操作,当b a
正是时返回a
。当您在保护
之后执行更多操作时,通常会在mwhen之前绑定a,而不需要返回。因此,mwhen的用处似乎主要是在do块的末尾保存一些击键。是我一个人,还是有很多haskell的问题,说“我还没有在Hoogle上找到它。它有用吗?”。我自己做的。尽管如此,答案还是很有趣。