给定以下表达式来对数字的 IEnumerable 求和:
let sum l = l |> Seq.reduce(+) //version a
是否有可能消除争论——像这样?
let sum = Seq.reduce(+) //version b
我从 F# 编译器 (FS0030) 中得到一个错误,我似乎记得曾经看过一些关于“eta 转换”的内容,但不幸的是,我对 lambda calc 的了解太有限,无法理解 eta 转换是如何涉及的。
可以像版本 b 中那样消除论点吗?
有人可以向我指出可以解释 eta 转换以及它将如何在这段特定代码中发挥作用的文献吗?
FS0030:
标准输入(1,5):错误 FS0030:值限制。值 'sum' 已被推断为具有泛型类型 val sum : ('_a -> int) when '_a :> seq 将参数明确地传递给 'sum' 或者,如果您不打算将其设为泛型,添加类型注释。