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();;