member m.Return a = Success(a)
member m.ReturnFrom a = a
| Failure(m) -> Failure(m)
member m.Zero() = Failure("hello world")
member m.Delay f = (fun () -> f())
let res = ResultBuilder()
fun a -> res { let! x = p1 a
fun a -> res { let! x = p1 a
| ex -> Failure(ex.Message)
fun a -> res { let! x = p1 a
| ex -> Failure(ex.Message) |> ignore
let func = Parser.Combine2 p1' p2' fn' a
let func = Parser.Combine3 p1' p2' fn' a