在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"了
我以为它会在hoogle上,但是no dice。
这是不是没有我想的那么有用?
发布于 2011-10-27 22:29:39
mwhen b a就是guard b >> return a。当你在guard之后做更多的事情时,你通常会在mwhen之前绑定a,并且不需要返回。所以mwhen的用处似乎主要是在do块的末尾节省了几次击键。
发布于 2011-10-25 01:46:34
它不存在的一个原因是,通常不需要这个组合子。您可以简单地使用<$或>>覆盖when的结果,因为在when之后通常有许多其他一元操作。
https://stackoverflow.com/questions/7879443
复制相似问题