Error: Type constraint mismatch when applying the default type 'int * int' for a type inference variable

Error: Type constraint mismatch when applying the default type 'int * int' for a type inference variable

我有一个将 2 个数相加的简单公式:

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

这会导致以下编译器错误消息:

错误:为类型推断变量应用默认类型 'int * int' 时类型约束不匹配。类型“(int * int)”不支持任何名为“+”的运算符考虑添加更多类型约束

以下内容在交互式 window 中运行良好,但我也需要它在我的编译器中运行:

let add ax bx = ax + bx;;

我看了一个类似的问题(最终答案得分-1):

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

答案真的只是在末尾添加一个“+ 0”吗?

let add a b = a + b + 0

这听起来像是一种带有不必要的处理开销的 hack。

您正在将元组传递给该行中的 add 函数:

let p = add(5,6)

这就是它无法工作的原因。在 F# 中,元组由 ,(逗号)分隔。尝试像这样重写它以传递单个值而不是元组(由 whitepsace 分隔)

let p = add 5 6