类型与 List.map2 不匹配

Type mismatch with List.map2

考虑以下因素

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

这给出了错误

Type mismatch. Expecting a int -> int -> 'a but given a
int -> int -> float The type 'float' does not match the type 'int'

为什么会发生这种情况,我该如何解决?

这似乎对我有用。

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

F# 没有从 intfloat 的自动转换。 (x+y) 是一个 int 值,2. 是一个 float 值。显式转换分子:

let avg = fun x y -> float (x+y) / 2.