3

我打算Map在 Ocaml 中练习使用。

我发现 of 的用法与,等Map有很大不同。ListArray

我知道这是functor我还没有学过的应用。但没关系。


这是我的IntMap

module IntMap = Map.Make(struct type t = int let compare = compare end)

所以,现在我可以使用IntMapto addbyIntMap.add x y map等,对吧?


我有几个问题:

  1. 如何控制中的value类型map
  2. 如果我想要 my 的别名类型,我IntMap应该怎么做?我可以做type 'a my_type = 'a list,但要怎么做map呢?
  3. 我发现这IntMap很像List,而且他们俩实际上都是modules。但是List有一个类型的list,那map呢?
4

1 回答 1

3

问:

如何控制地图中值的类型?

你不需要(不需要),'a IntMap.t是一个包含 type 值的参数化类型'a。因此,单个模块IntMap可用于从整数到整数、从整数到布尔值、整数到函数的映射……(当然,单个映射值只能包含单一类型的绑定)。此外,没有理由尝试限制 的类型IntMap.empty,就像没有理由强制[]成为 以外的任何类型一样'a list

问:

如果我想要我的 IntMap 的别名类型,我应该怎么做?我可以输入 'a my_type = ' 一个列表,但是对于 map 怎么办?

这边走:

type 'a imap = 'a IntMap.t

问:

我发现 IntMap 就像 List 一样,它们实际上都是模块。但是List有一个list类型,那map呢?

这是Intmap.t.

于 2013-04-04T11:59:52.267 回答