首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(MonadPlus m => Bool -> a -> m a)是不是没有用?

(MonadPlus m => Bool -> a -> m a)是不是没有用?
EN

Stack Overflow用户
提问于 2011-10-25 01:32:16
回答 2查看 259关注 0票数 3

taking a gander at codepad.org之后,我受到了使用FizzBuzz的启发,并发现自己需要一些功能:

代码语言:javascript
复制
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

这是不是没有我想的那么有用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-27 22:29:39

mwhen b a就是guard b >> return a。当你在guard之后做更多的事情时,你通常会在mwhen之前绑定a,并且不需要返回。所以mwhen的用处似乎主要是在do块的末尾节省了几次击键。

票数 1
EN

Stack Overflow用户

发布于 2011-10-25 01:46:34

它不存在的一个原因是,通常不需要这个组合子。您可以简单地使用<$>>覆盖when的结果,因为在when之后通常有许多其他一元操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7879443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档