2

我试图了解人们如何在 OCaml 中编写 trie。我在网上找到了一个例子:

它定义了一个地图:

module CharMap = Map.Make(Char)

然后它定义了 trie 的类型:

(* count of members of the set that end at this node * mapping from
     next char => children *)
type trie = Node of int * trie CharMap.t

这是我的问题:什么是trie CharMap.t?我认为这是某种地图,但我无法弄清楚它是什么。

谢谢

4

3 回答 3

4

为了扩展 rgrinberg 的答案:在 OCaml 中,类型构造函数位于其参数之后。所以你有int list,这是一个整数列表。在这里,您有一个类型构造函数CharMap.t,它构造其键为 type 的映射charint CharMap.tchars 到s 的映射也是如此int。的含义trie CharMap.t是完全类似的,除了可能是因为(正如 rgrinberg 指出的那样),这是对 type 的递归使用trie。它类似于树的定义,树的节点中包含的事物本身就是树。在这里,包含在 trie 中的东西本身就是尝试。

于 2013-03-07T23:06:34.813 回答
2

从您的代码段中,我猜trie CharMap.t是一个映射,其中键是字符,值是trie递归定义的类型。

于 2013-03-07T23:01:37.813 回答
1

trie CharMap.t 是从 Char 到 trie 数据类型的映射类型。这使用参数类型。例如,

类型'parampaired_with_int = int *'param;;

然后您可以按如下方式指定类型:

type specific_pair = floatpaired_with_int;;

于 2013-08-01T15:30:49.100 回答