Jam*_*ore 3 f# computation-expression
这段代码:
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
Run Code Online (Sandbox Code Playgroud)
打印成功"是的!"
但是发出警告意味着它不应该起作用:
File1.fs(19,3):warning FS0708:只有在计算表达式构建器定义'ReturnFrom'方法时才可以使用此控件构造
看起来像一个奇怪的警告:如果它是正确的,那么代码应该不起作用.它真的只是说建造者必须合成ReturnFrom吗?
(F#版本1.9.7.4,编译.NET Framework版本v4.0.21006)
我把问题发送到fsbugs@microsoft.com,这是一个错误.他们说在下一个版本中它将是一个错误.
(他们几乎立即回应,感恩节也没有 - 这只是花了我一段时间把信息放在这里.)