Arrays OCaml中的数组操作

Arrays OCaml中的数组操作,arrays,ocaml,Arrays,Ocaml,我正在OCaml中操作二维数组。我有一些问题: 如何声明长度为int64类型而不是int类型的数组?例如,Array.make:int->'a->'a数组,如果我需要一个索引类型为int64的更大数组,该怎么办 我可以这样写吗 设array=array.make_矩阵10英寸 阵列。(1)。(2)在64位系统上,来自阵列模块的OCaml阵列的大小限制为2^54-1,在32位系统上,限制为4194303。对于浮点数组,限制要小2倍。在这两种情况下,索引都很容易表示为int,因此使用int64作为

我正在OCaml中操作二维数组。我有一些问题:

  • 如何声明长度为
    int64
    类型而不是
    int
    类型的数组?例如,
    Array.make:int->'a->'a数组
    ,如果我需要一个索引类型为
    int64
    的更大数组,该怎么办

  • 我可以这样写吗

    设array=array.make_矩阵10英寸
    阵列。(1)。(2)在64位系统上,来自阵列模块的OCaml阵列的大小限制为2^54-1,在32位系统上,限制为4194303。对于浮点数组,限制要小2倍。在这两种情况下,索引都很容易表示为int,因此使用int64作为索引没有任何优势

    对于某些问题来说,32位系统的值太小,因此有另一个名为Bigarray的模块可以表示更大的数组。它支持更大的数组,但索引仍然是int。如果您确实需要有更大的索引,那么您可能在64位系统上,这不是一个限制。如果没有,我想你的地址空间还是会用完的。也许你真正想要的是一个哈希表

    我不知道你在说什么“让”。let的目的是给某物起个名字。在开始将值存储到数组中之前,给数组命名并不是不合理的。如果要在创建数组时定义值,可以使用array.init并编写任意函数来设置数组值

    OCaml中的数组代码本质上是必需的,所以您通常会得到具有这种外观的代码。我经常使用
    开始
    结束
    ,只是接受它的算法性质