键入与List.map2不匹配

时间:2015-01-19 13:13:06

标签: f#

考虑以下

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'类型

不匹配

为什么会发生这种情况,我该怎么做才能解决它?

2 个答案:

答案 0 :(得分:5)

F#没有从intfloat的自动转换。 (x+y)值为int2.值为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