2015-03-31 67 views
1

我有加入2號的簡單公式:錯誤:類型約束不匹配申請類型的默認類型「詮釋* INT」時推斷變量

let add a b = a + b 
let p = add(5,6) 

這導致以下編譯器錯誤消息:

錯誤:爲類型推斷變量應用默認類型「int * int」時,類型約束不匹配。類型「(INT * INT)」不支持名爲「+」考慮加入其它類型的約束

以下工作在交互式窗口罰款,但我需要它在我的編譯工作,以及任何運營商:

let add ax bx = ax + bx;; 

我看了一個類似的問題(最終的答案拿下-1):

F# and type inference: "int list" does not support "+"

答案是真的,只是增加了「+ 0」結束了嗎?

let add a b = a + b + 0 

這聽起來像是一種不必要的處理開銷。

+1

你如何調用add函數?看來你稱它傳遞了一個元組'add(1,2)'而不是'add 1 2' – 2015-03-31 10:53:58

+0

Hi @Thomas,我已經更新了代碼。看來問題出現在let p = add(5,6)語句中。 – z0mbi3 2015-03-31 10:56:51

回答

1

你傳遞一個元組到您的add功能在該行:

let p = add(5,6) 

這就是爲什麼它不能正常工作。在F#中,元組由,(逗號)分隔。嘗試重寫它就像傳遞個別值而不是元組(由whitepsace分隔)

let p = add 5 6