我想在sumOfSquares
没有明确使用参数的情况下进行定义,而是依靠功能组合
下面是我的代码
let sumOfSquares = Seq.map (fun n -> n * n) >> Seq.sum
但是,我收到以下错误
标准输入(80,5):错误 FS0030:值限制。值“sumOfSquares”已被推断为具有泛型类型
val sumOfSquares : ('_a -> int) when '_a :> seq<int>
要么使“sumOfSquares”的参数显式,或者,如果您不希望它是通用的,请添加类型注释。
解决它的一种方法是使用参数
let sumOfSquares nums = nums |> Seq.map (fun n -> n * n) |> Seq.sum
这将起作用。但是,我想看看我是否可以单独使用组合来定义平方和
更新
这是一篇很好的文章,描述了我遇到的问题:Value Restriction。