【问题标题】:Error: Type constraint mismatch when applying the default type 'int * int' for a type inference variable [duplicate]错误:为类型推断变量应用默认类型“int * int”时类型约束不匹配[重复]
【发布时间】:2015-03-31 10:40:16
【问题描述】:

我有一个简单的公式来添加 2 个数字:

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

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

【问题讨论】:

  • 怎么调用add函数?看来您称它为传递元组 add (1, 2) 而不是 add 1 2
  • 嗨@Thomas,我已经更新了代码。似乎问题在于 let p = add(5,6) 语句。

标签: compiler-errors f#


【解决方案1】:

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

let p = add(5,6)

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

let p = add 5 6

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    相关资源
    最近更新 更多