我是一種新的F#所以也許我的問題是愚蠢的。我在F#中編寫了一個使用泛型類型的程序。編譯器確定的類型不是我想要的方式,因爲我在最深的函數調用中有一個錯誤,我已經將類型實例化爲錯誤的類型。這顯然導致了其他地方的類型不匹配,因爲我曾經使用過這種類型。我不得不提到找到問題的根源,我試圖明確強制執行更高級別的函數,以使用我希望用於泛型類型的類型。然而,類型不匹配顯示在那些高級函數中,而不是低級函數是類型被實例化的。我認爲這不是確定類型的非常方便的方式,因爲通常程序員更容易確定更高級別函數的類型,並且如果類型已確定,則此顯式類型分配應導致較低級別函數中的類型錯誤。根據我的經驗,似乎編譯器的自動類型確定會覆蓋顯式類型聲明。我在這裏理解錯誤嗎?F#類型推斷
類似下面的代碼:
type test<'a,'b>={Func:'a->'b; Arg:'a}
let C(a)=
a.Func(2)|>ignore
let B(a)=
C(a)
let A(a:test<int64,int64>)=
B(a) //<-----------------------the type mismatch is detected here
在這樣高水平的函數調用已經檢測到的錯誤會使得它很難找到問題的根源,因爲現在不僅我得找有關的蟲子變量的值,還有類型確定的錯誤。
「編譯器的自動類型確定重寫顯式類型聲明」 - >否,它不... – 2011-02-24 02:08:19
你可以發佈你的代碼嗎?否則很難給你的具體問題提供建議...... – 2011-02-24 02:08:55
@Mauricio Scheffer:現在我已經添加了代碼示例。謝謝:) – amirmonshi 2011-02-24 02:26:27