我正在尝试学习F#并且我跟随this sample(第37页,在kmeans
函数内):因为我的代码在F#4中,我需要更新以下内容使用List.item
代替List.nth
:
let centroids =
let rnd = System.Random()
[ for i in 1 .. clusterCount ->
List.nth data (rnd.Next(data.Length)) ]
哪个成为:
let centroids =
let random = System.Random()
[for i in 1 .. clusterCount ->
data.[(random.Next(data.Length))]]
但我现在在最后一行收到错误The operator expr.[idx] has been used on object of indeterminate type... Consider adding further type constrains
。如果我添加(data:(float*float)list)
类型约束它会消失,但我如何保持data
为'a list
并仍使用List.item
的灵活性?
答案 0 :(得分:3)
您可以使用泛型类型作为类型注释:
(data : 'a list)
或者,如果您不想为其命名:
(data : _ list)