F# 演算式を学習しようとしています。一般的に、Zero メンバーの目的は何ですか?
シーケンスの定義は何ですか?
非同期ワークフローの定義は何ですか?
F# 演算式を学習しようとしています。一般的に、Zero メンバーの目的は何ですか?
シーケンスの定義は何ですか?
非同期ワークフローの定義は何ですか?
メンバーは、Zero
たとえば、式でelse
ブランチを省略した場合に使用されます。if
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
。