定义 F# 计算表达式时 Zero 成员的用途是什么?



我正在尝试学习F#计算表达式。 一般来说,零成员的目的是什么?

它对序列的定义是什么?

它对异步工作流的定义是什么?

例如

,当您省略if表达式中的else分支时,将使用Zero成员:

comp { if b then return 1
       return 2 }

。将翻译为如下所示的内容:

comp.Combine
  ( if b then comp.Return(1) else comp.Zero(),
    comp.Return(2) )

如何为标准计算类型定义它?

    对于异步工作流
  • ,它被定义为立即返回单位值的异步工作流 - 基本上等同于写入:async { return () }

  • 对于序列(使用 yield 而不是 return ),Zero 成员返回一个不返回任何内容的序列,对应于标准Seq.empty值。

如果你想阅读更多的理论背景,那么你可以看看这篇论文。用更理论的术语来说,它说Zero要么是return ()的(当计算是单元时),要么将是幺半群的单位(当计算是幺半群时),这是哈斯克勒斯称之为mzero的东西。

相关内容

  • 没有找到相关文章

最新更新