Bigarray.Array1.t类型构造函数

时间:2015-04-29 04:38:43

标签: ocaml

我在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

1 个答案:

答案 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

我不知道您链接到的代码会发生什么。也许他们正在做一些聪明的事。