考慮以下幾點:類型和功能
type T() =
member x.y = 4
let a =
let fn() (k: T) =()
fn()
let b =
let fn() (k: System.IO.Directory) =()
fn()
a
而b
是確定的失敗。錯誤消息是:
當'_a:> T或者將參數設置爲'a'時,值'a'已被推斷爲泛型類型val a:('_a - > unit)如果你不打算這是通用的,添加一個類型註釋
爲什麼以及如何解決這個問題?
但是,向定義中添加'x'會將'a'從函數值更改爲函數,這意味着它不會在啓動過程中進行評估。有關完整的解釋,請參見[F#值,函數和一點點](http://blog.wezeku.com/2010/08/01/values-functions-and-a-bit-of-both)。 – 2012-02-03 14:07:19