键入与List.map2不匹配

kas*_*rhj 0 f#

考虑以下

let l1 = [1..10]
let l2 = [11..20]
let avg = fun x y-> (x+y)/2.
let c = (l1, l2) ||> List.map2 avg
Run Code Online (Sandbox Code Playgroud)

这给出了错误

类型不匹配.期望一个int - > int - >'a但是给定一个
int - > int - > float类型'float'与'int'类型不匹配

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

Mau*_*Mau 5

F#没有自动转换intfloat.(x+y)是一个int值,2.是一个float值.明确转换分子:

let avg = fun x y -> float (x+y) / 2.
Run Code Online (Sandbox Code Playgroud)