为什么以下生成错误?
let mult a b = a * b
let sum a b = a + b
第二个let生成编译错误:
对类型推理变量应用默认类型“int list”时,类型约束不匹配。类型'int list'不支持任何名为'+'的运算符。考虑添加更多类型约束
我不明白。为什么假设我输入了一个列表?
完整列表:
let sampleTimeSeries =
dict [
"20110131", 1.5;
"20110228", 1.5;
"20110331", 1.5;
"20110431", 1.5;
"20110531", 1.5;
]
// Recursive reduce function
// func : The function to apply
// terminatingvalue : The terminating value
// sequence : The list to apply the value on.
let rec reduce func sequence terminatingValue:int =
match sequence with
| [] -> terminatingValue
| h::t -> func h (reduce func t terminatingValue)
let mult a b = a * b
let sum a b = a + b + 0
一旦我在sum函数的末尾添加了0,它就可以正确编译。
答案 0 :(得分:-1)
在声明的末尾添加0有助于编译器推断出sum
函数的返回类型:
let mult a b = a * b
let sum a b = a + b + 0