F#List.item operator expr。[idx]用于不确定类型的对象

时间:2017-06-23 11:05:42

标签: f#

我正在尝试学习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的灵活性?

1 个答案:

答案 0 :(得分:3)

您可以使用泛型类型作为类型注释:

(data : 'a list)

或者,如果您不想为其命名:

(data : _ list)