type OptionBuilder() =
    member self.Bind(input, operation) = Option.bind operation input
    member self.Delay (operation:(unit -> 'a option)) = operation ()
    member self.Return input = Some input
    member self.ReturnFrom (input : 'a option) = input
let option = OptionBuilder();;