Haskell:MonadPlus m=>;Bool->;a->;MA)有用吗?

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

之后,我受到了玩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
后有许多其他的一元操作,当b a
正是
时返回a
。当您在
保护
之后执行更多操作时,通常会在mwhen之前绑定a,而不需要返回。因此,mwhen的用处似乎主要是在do块的末尾保存一些击键。

是我一个人,还是有很多haskell的问题,说“我还没有在Hoogle上找到它。它有用吗?”。我自己做的。尽管如此,答案还是很有趣。