如何使用全部功能

拉斯穆斯

我发现自己想使用all单子函数。在我看来,这并不是真的很漂亮:

f :: Monad m => a -> m Bool

g :: Monad m => [a] -> m Int
g xs = do cnd <- liftM (all (== True)) $ mapM f xs
          if cnd
           then return 42
           else return 0

有更好的方法吗?

比克利尔

如果您import Control.ApplicativeData.Bool(如果使用base >= 4.7)一起使用,则可以将其写为

g xs = bool 0 42 <$> and <$> mapM f xs
-- Or equivalently
-- g xs = bool 0 42 . and <$> mapM f xs
-- g = fmap (bool 0 42 . and) . mapM f

但是我认为这不会给您带来很多好处。相反,您也可以将其拉到return之外if-then-else

g xs = do cnd <- and <$> mapM f xs
          return $ if cnd then 42 else 0

甚至

g xs = do ys <- mapM f xs
          return $ if and ys then 42 else 0

我认为大多数人会更愿意看到最后两个版本中的一个,尽管对于使用“ if and foo then bar else baz”的英语使用者来说,最后一个版本看起来有点奇怪

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使功能全部组合?

来自分类Dev

我如何利用CPU的全部功率?为什么在需要时不使用其全部功能?

来自分类Dev

使用iptables设置全部功能

来自分类Dev

使用iptables设置全部功能

来自分类Dev

Python中的“全部”功能如何工作?

来自分类Dev

如何在Android中实现Google Map的全部功能

来自分类Dev

在SQL中实现全部功能

来自分类Dev

应用“全部”功能的更快方法?

来自分类Dev

如何在Aptana Studio 3的代码折叠功能中“全部扩展”

来自分类Dev

如何在PHP的cisco呼叫管理器上为扩展设置“全部转发”功能?

来自分类Dev

如何在模型中直接使用全部大写的CharField?

来自分类Dev

如何打印Wordnet的全部内容(最好使用NLTK)?

来自分类Dev

使用simpleXML解析打印缩略图-如何返回全部?

来自分类Dev

如何进行hg还原-全部使用git?

来自分类Dev

如何使用Terraform完全部署Containerized Azure Function App

来自分类Dev

如何使用Python接收Watson Speech to Text SDK的全部输出?

来自分类Dev

如何使用.htaccess访问一个文件:全部拒绝

来自分类Dev

如何强制gcc和ld(使全部)使用更少的内存?

来自分类Dev

如何使用复选框创建“全部选中/取消选中”?

来自分类Dev

如何使用liveScroll在Primefaces DataTable中选择全部

来自分类Dev

如何使用forloop按列分组并合并全部

来自分类Dev

如何使用通话功能?

来自分类Dev

如何使用加载功能?

来自分类Dev

如何使用这种功能?

来自分类Dev

如何使用mod功能?

来自分类Dev

我可以使用Moq集成访问UnitTests中Autofac的全部功能吗

来自分类Dev

Windows 8的Hyper-V是否可以使用主机硬件的全部功能?

来自分类Dev

Ubuntu USB Live的新功能-更改不保存+ USB驱动器的全部内存未使用

来自分类Dev

Dplyr:如何分组(全部)

Related 相关文章

  1. 1

    如何使功能全部组合?

  2. 2

    我如何利用CPU的全部功率?为什么在需要时不使用其全部功能?

  3. 3

    使用iptables设置全部功能

  4. 4

    使用iptables设置全部功能

  5. 5

    Python中的“全部”功能如何工作?

  6. 6

    如何在Android中实现Google Map的全部功能

  7. 7

    在SQL中实现全部功能

  8. 8

    应用“全部”功能的更快方法?

  9. 9

    如何在Aptana Studio 3的代码折叠功能中“全部扩展”

  10. 10

    如何在PHP的cisco呼叫管理器上为扩展设置“全部转发”功能?

  11. 11

    如何在模型中直接使用全部大写的CharField?

  12. 12

    如何打印Wordnet的全部内容(最好使用NLTK)?

  13. 13

    使用simpleXML解析打印缩略图-如何返回全部?

  14. 14

    如何进行hg还原-全部使用git?

  15. 15

    如何使用Terraform完全部署Containerized Azure Function App

  16. 16

    如何使用Python接收Watson Speech to Text SDK的全部输出?

  17. 17

    如何使用.htaccess访问一个文件:全部拒绝

  18. 18

    如何强制gcc和ld(使全部)使用更少的内存?

  19. 19

    如何使用复选框创建“全部选中/取消选中”?

  20. 20

    如何使用liveScroll在Primefaces DataTable中选择全部

  21. 21

    如何使用forloop按列分组并合并全部

  22. 22

    如何使用通话功能?

  23. 23

    如何使用加载功能?

  24. 24

    如何使用这种功能?

  25. 25

    如何使用mod功能?

  26. 26

    我可以使用Moq集成访问UnitTests中Autofac的全部功能吗

  27. 27

    Windows 8的Hyper-V是否可以使用主机硬件的全部功能?

  28. 28

    Ubuntu USB Live的新功能-更改不保存+ USB驱动器的全部内存未使用

  29. 29

    Dplyr:如何分组(全部)

热门标签

归档