Zero and Combine in Computation Expression

Viewed 235

I have the following computation expression builder:

type ExprBuilder() = 
    member this.Return(x) =
        Some x

let expr = new ExprBuilder()

I understand the purpose of methods Return, Zero and Combine, but I don't understand what is the difference between expressions shown below:

let a = expr{
    printfn "Hello"
    return 1
} // result is Some 1

let c = expr{
   return 1
   printfn "Hello"
} // do not compile. Combine method required

I also don't understand why in the first case Zero method in not required for printfn statement?

1 Answers
Related