F#中的通用O(1)列表/数组?

时间:2018-03-10 21:52:16

标签: arraylist f#

F#中的数组是否通用?

Reference section states不是,因为它说,数组是Systam.Array。

同时我看到有阵列<'T> class,在参考文献中没有提到。为什么和使用哪个数组?

1 个答案:

答案 0 :(得分:4)

是的,F#数组是通用的 - 这是一个采用array<'T>的通用函数的例子:

let nth n (arr:array<'T>) = arr.[n]

nth 1 [| 1; 2; 3 |]
nth 1 [| "a"; "b" |]

这会创建标准.NET数组,因此查找为O(1),如果这是您的问题的一部分。 .NET中的数组在适当的泛型之前存在,因此它们在某种程度上是一种特殊情况(例如,反射并不将它们视为普通的泛型类型),但从F#类型系统的角度来看,它们只是普通的泛型类型。