【问题标题】:Type mismatch with List.map2类型与 List.map2 不匹配
【发布时间】:2015-01-19 13:13:05
【问题描述】:

考虑以下

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 -> 'a 但给定一个
int -> int -> float 类型 'float' 与类型 'int' 不匹配

为什么会发生这种情况,我可以做些什么来解决它?

【问题讨论】:

    标签: f#


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      这似乎对我有用。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-20
        • 2018-06-08
        • 1970-01-01
        • 2015-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多