Ocaml-如何显式声明列表可变类型

Ocaml-如何显式声明列表可变类型,ocaml,declaration,explicit,Ocaml,Declaration,Explicit,我试过这样的方法: let lchars : char ref list = ref [];; 但是不起作用…参数化的OCaml类型是按后缀顺序指定的,因此类型char ref list首先是一个列表。换句话说,它是对char的引用列表: let lchars : char list ref = ref[];; let (x: char ref list) = [ ref 'a'; ref 'b'] 类似地,类型char list ref首先是一个引用。这是对字符列表的引用: let (y

我试过这样的方法:

let lchars : char ref list = ref [];;

但是不起作用…

参数化的OCaml类型是按后缀顺序指定的,因此类型
char ref list
首先是一个列表。换句话说,它是对char的引用列表:

let lchars : char list ref = ref[];;
let (x: char ref list) = [ ref 'a'; ref 'b']
类似地,类型
char list ref
首先是一个引用。这是对字符列表的引用:

let (y: char list ref) = ref ['a'; 'b']

您需要这些类型中的第二种,但您的代码指定了第一种类型。

参数化的OCaml类型是按后缀顺序指定的,因此类型
char ref list
首先是一个列表。换句话说,它是对char的引用列表:

let (x: char ref list) = [ ref 'a'; ref 'b']
类似地,类型
char list ref
首先是一个引用。这是对字符列表的引用:

let (y: char list ref) = ref ['a'; 'b']

您想要这些类型中的第二种,但您的代码指定了第一种类型。

您能更具体地说明这个解决方案吗?我想知道为什么。你能更具体地说明这个解决方案吗?我想知道为什么。