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'方法
看起來像一個奇怪的警告:如果它是正確的,那麼代碼不應該工作。這真的只是說建設者必須綜合ReturnFrom嗎?
(F#版本1.9.7.4,編譯爲.NET Framework版本v4.0.21006)
沒有理由不去做那些事 - 這只是一些示例代碼,我被打在附近,我無法理解錯誤是想告訴我什麼。 我把這封郵件寄給fsbugs,我們會看到他們要說的。 – 2009-11-26 18:12:54