这段代码:
type Result = Success of string
type Tracer() =
member x.Bind(p: Result, rest: (string -> Result)) =
match p with
| Success s -> rest s
let tracer = new Tracer()
let t = tracer {
let! x = Success "yes!"
let! y = Success "waste of time"
return! Success x
}
printfn "%A" t
打印成功“是!”
但是给出一个警告,暗示它不应该工作:
File1.fs(19,3):警告 FS0708:仅当计算表达式构建器定义了“ReturnFrom”方法时,才可以使用此控制构造
似乎是一个奇怪的警告:如果它是正确的,那么代码不应该工作。真的只是说builder必须合成ReturnFrom吗?
(F# 版本 1.9.7.4,为 .NET Framework 版本 v4.0.21006 编译)