我有以下计算表达式生成器:
type ExprBuilder() =
member this.Return(x) =
Some x
let expr = new ExprBuilder()
我了解方法Return、Zero和Combine的目的,但我不明白下面显示的表达式之间有什么区别:
let a = expr{
printfn "Hello"
return 1
} // result is Some 1
let c = expr{
return 1
printfn "Hello"
} // do not compile. Combine method required
我也不明白为什么在第一种情况下, printfn语句不需要零方法?