定义F#计算表达式时,零成员的用途是什么?
我正在努力学习F#计算表达式。一般来说,零成员的目的是什么 它对序列的定义是什么定义F#计算表达式时,零成员的用途是什么?,f#,computation-expression,F#,Computation Expression,我正在努力学习F#计算表达式。一般来说,零成员的目的是什么 它对序列的定义是什么 异步工作流的定义是什么?使用Zero成员,例如,在if表达式中省略else分支时: comp { if b then return 1 return 2 } 。。。将被翻译成如下内容: comp.Combine ( if b then comp.Return(1) else comp.Zero(), comp.Return(2) ) 如何为标准计算类型定义它 对于异步工作流,它被定义
异步工作流的定义是什么?使用
Zero
成员,例如,在if
表达式中省略else
分支时:
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()
(当计算是单子时),要么是一个幺半群的单位(当计算是幺半群时),这是Haskeller称之为mzero
的东西,例如,使用了Zero
成员,在if
表达式中省略else
分支时:
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()
(当计算是单子时),要么是幺半群的单位(当计算是幺半群时),这是Haskellers称之为mzero