设置OCaml列表的类型

时间:2012-06-14 07:59:18

标签: list ocaml

我想将列表的类型设置为整数但我不知道如何执行此操作。 我可以做到以下几点:

let listOfInts = [];

但这只是使listOfInts成为一个允许放入任何类型的列表。 如何强制listOfInts只是一个整数列表?

这是用于在OCaml中创建一个字典,它将字符串(键)映射到int(值)。 为简单起见,我只是将值设置为字符串的长度。 有人可以帮我解决这个问题吗?提前谢谢。

2 个答案:

答案 0 :(得分:7)

明确声明类型。

let (listOfInts : int list) = [];

答案 1 :(得分:4)

此处通过注释强制类型是没有用的:您可以在任何类型使用[],但是,只要您使用它来创建特定类型的元素列表,它就会被实例化为正确的类型。

对于具有可变状态的值的类型,注释偶尔也是有用的,既不是完全推断也不是通用的(例如ref [])。

我没有看到这与你在字符串和整数之间有一个映射的更广泛问题有什么关系,因为这根本不涉及列表。如果您想要一个可变地图,可以使用Hasthbl,否则Map

module StringMap = Map.Make(String)
let m = StringMap.add "foo" 3 StringMap.empty

m的类型为int StringMap.t