2015-03-31 38 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