记录类型中的数组

时间:2017-12-17 16:49:07

标签: arrays ocaml record

我想定义一个记录类型,其中一个成员是类型数组,如下所示:

 type h = {x:int; y:int; pic : Array of int};;

这会在of位置发出语法错误:

 type h = {x:int; y:int; pic : Array *of* int};;

现在,如果我使用中间类型命名Array of int,它可以工作:

 type a = Array of int;;
 type h = {x:int; y:int; pic : a};;

是缺陷还是我想念某事? (我的ocaml版本是4.05.0)

然后,一旦type h被定义,我就无法使用它:

 let n = {x=0;y=0;pic=[| 0 |]};;

我收到了错误:

 Error: This expression has type 'a array but an expression was expected of type
     a

1 个答案:

答案 0 :(得分:3)

int s数组的类型为int arraytype a = Array of int定义了一个带有单个构造函数Array的变体,它带有int类型的有效负载。