爲什麼Bind1和Bind2有不同的簽名?爲什麼這兩種方法的簽名不同?
type T() =
let bind(v, f) = v
member self.Bind1 = bind
member self.Bind2(a, b) = bind(a, b)
FSI報告他們作爲
type T =
class
new : unit -> T
member Bind2 : a:'a * b:'b -> 'a
member Bind1 : (obj * obj -> obj)
end
在此之前,當我與一些計算表達式玩,無法弄清楚,爲什麼我得到約沒有被定義綁定的錯誤消息。 Bind1風格不起作用,Bind2做到了,我無法弄清楚爲什麼。
由於相同的對象,他們返回相同的結果:
> q.Bind1(1:>obj,3:>obj);;
val it : obj = 1
> q.Bind2(1:>obj,3:>obj);;
val it : obj = 1
>
使用Microsoft F#互動,(c)Microsoft公司,保留所有權利 F#版本1.9.7.4,編譯爲.NET Framework版本v4.0.21006