使用默认的int * int类型除法键入Constraint Mismatch

时间:2012-02-09 05:10:20

标签: .net f#

所以我正在处理一些示例F#代码,并遇到以下片段:

let divRem a b = 
    let x = a / b
    let y = a % b
    (x,y)

当我尝试编译它时,我收到以下错误:

  

HelloWorld \ Program.fs(15,14):错误FS0071:类型约束不匹配   在为类型推断应用默认类型'int * int'时   变量。类型'(int * int)'不支持任何名为的运算符   '/'考虑添加更多类型约束

但是,做一些像

这样的事情
let print n = System.Console.WriteLine(n.ToString())
print (4/2)

结果

  

2

为什么整数除法运算在函数定义中不可用?

修改 以下是无法编译的代码的完整示例。

let divRem a b = 
    let x = a / b
    let y = a % b
    (x,y)

let print n = System.Console.WriteLine(n.ToString())
print (divRem (5,3))

2 个答案:

答案 0 :(得分:7)

问题是你在F#中调用函数时不使用逗号,逗号用于创建元组。代码应该是:

let divRem a b = 
    let x = a / b
    let y = a % b
    (x,y)

let print n = System.Console.WriteLine(n.ToString())
print (divRem 5 3)

答案 1 :(得分:0)

let divRem (a, b) = 
    let x = a / b
    let y = a % b
    (x,y)

let print n = System.Console.WriteLine(n.ToString())
print (divRem (5,3))
相关问题