1

F# 演算式を学習しようとしています。一般的に、Zero メンバーの目的は何ですか?

シーケンスの定義は何ですか?

非同期ワークフローの定義は何ですか?

4

1 に答える 1

6

メンバーは、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

より理論的な背景について読みたい場合は、この論文をご覧ください。より理論的な用語では、Zeroreturn ()(計算がモナドの場合) になるか、Haskellers が と呼ぶものであるモノイドの単位 (計算がモノイドの場合) になると言いますmzero

于 2012-12-09T01:17:32.727 に答える