我在here
看到了这种类型的声明type int64_array =
(int64, Bigarray.int32_elt, Bigarray.c_layout) Bigarray.Array1.t
从手册中我了解到,对于('a, 'b, 'c) Bigarray.Array1.t
,'a
是数组元素的类型,'b
是表示类型。
为什么我们可以使用int32_elt
代表int64
?
答案 0 :(得分:1)
如果类型可用,则表示从OCaml访问时将值表示为int64,但是将它们作为int32值存储在内部。这类似于在数组中存储8位值并从OCaml访问时以整数表示它们的情况。
但是,据我所知,您无法创建任何类型的数组。您只能创建Bigarray
中定义的种类数组:
val float32 : (float, float32_elt) kind
val float64 : (float, float64_elt) kind
val complex32 : (Complex.t, complex32_elt) kind
val complex64 : (Complex.t, complex64_elt) kind
val int8_signed : (int, int8_signed_elt) kind
val int8_unsigned : (int, int8_unsigned_elt) kind
val int16_signed : (int, int16_signed_elt) kind
val int16_unsigned : (int, int16_unsigned_elt) kind
val int : (int, int_elt) kind
val int32 : (int32, int32_elt) kind
val int64 : (int64, int64_elt) kind
val nativeint : (nativeint, nativeint_elt) kind
val char : (char, int8_unsigned_elt) kind
我不知道您链接到的代码会发生什么。也许他们正在做一些聪明的事。