taking a gander at codepad.org之后,我受到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"
我希望它会大声疾呼,但no dice。
这不是我想的有用吗?
最佳答案
mwhen b a
恰好是guard b >> return a
。当您在guard
之后执行更多操作时,通常会在mwhen之前将a绑定在一起,而不需要返回。因此,mwhen的用处似乎主要是在do-block的末尾节省了一些击键。
关于haskell - Haskell:(MonadPlus m => Bool-> a-> m a)有用吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7879443/