計算式のメソッドに関する msdn ドキュメントには、次のように記載されています。Zero
計算式
elseの式の空の分岐に対して呼び出されます。if...then
定義されidentityていない計算ビルダーを使用しているとします。Zero
let IdentityBuilder() =
member this.Bind(i, f) = f i
member this.Return(i) = i
let identity = new IdentityBuilder()
以下のコードは許可されています
identity {
printf "Hello World"
return 1
}
ただし、次のコードは許可されておらず、コンパイラ エラーで失敗します。
この制御構造は、計算式ビルダーが「ゼロ」メソッドを定義する場合にのみ使用できます
identity {
if true then printf "Hello World"
return 1
}
コンパイラが分岐の呼び出しZeroを主張するのはなぜですか? elseこの背後にある直感は何ですか?