考虑以下
let l1 = [1..10]
let l2 = [11..20]
let avg = fun x y-> (x+y)/2.
let c = (l1, l2) ||> List.map2 avg
给出错误
类型不匹配。期待一个int - > int - > '但是给了一个 int - > int - > float类型'float'与'int'类型
不匹配
为什么会发生这种情况,我该怎么做才能解决它?
答案 0 :(得分:5)
F#没有从int
到float
的自动转换。 (x+y)
值为int
,2.
值为float
。明确转换分子:
let avg = fun x y -> float (x+y) / 2.
答案 1 :(得分:3)
这似乎对我有用。
let l1 = [1..10]
let l2 = [11..20]
let avg = fun x y-> float(x+y) / 2.
let c = (l1, l2) ||> List.map2 avg