計算式のメソッドに関する 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
この背後にある直感は何ですか?