taking a gander at codepad.org之后,我受到FizzBu​​zz的启发,发现自己想要一些功能:

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/

10-10 11:35