【发布时间】:2011-10-25 15:16:19
【问题描述】:
我正在尝试通过序列的第一个元素来缩放序列,因此第一个元素将始终为一个,然后后续元素是原始序列的第一个元素与第 n 个元素的比率。
这是我的代码,
open System
open System.Collections
let squish1 (x:Double seq) =
let r = (Seq.head x:Double)
Seq.fold (fun (xi:Double) (r:Double) -> xi/r);;
我在这个小向量上进行测试:-
squish1 [|5.0; 1.0; 1.0; 1.0; 1.0; 1.0|];;
我已输入所有内容,因为我收到此错误消息
normaliseSequence.fsx(9,1):错误 FS0030:值限制。值“它”已被 >推断为具有泛型类型 val it : (Double -> '_a -> Double) 当 '_a :> seq
要么明确“它”的参数,要么,如果你不打算让它是通用的,>添加一个类型注释。
但显然我误解了,因为即使输入了所有内容,我也会收到错误消息。我错过了什么?
感谢您收到任何和所有建议。谢谢
【问题讨论】:
-
请注意,在 F# 中使用别名
float而不是System.Double更为惯用。 -
是的,我知道。由于我们有时必须处理的数据类型,这是我们的开发团队的设计选择。
-
但是
float只是System.Double的别名。他们是一样的。 kvb 只是说在您的代码中使用float别名更为惯用 - 它不会改变您程序的行为。 -
很有趣,会将您的 cmets 传递给首席开发人员。