2

私は人々が OCaml でトライを書く方法を理解しようとしています。私がオンラインで見つけた例があります:

マップを定義します。

module CharMap = Map.Make(Char)

次に、トライのタイプを定義します。

(* 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は int のリストです。ここにはCharMap.t、キーが type であるマップを構築する型コンストラクターがありますchar。したがって、s からs へのint CharMap.tマップになります。の意味は完全に類似していますが、おそらく (rgrinberg が指摘しているように) これは type の再帰的な使用であるという事実を除いては. ツリーのノードに含まれるもの自体がツリーであるという点で、ツリーの定義に似ています。ここで、トライに含まれるもの自体がトライです。charinttrie CharMap.ttrie

于 2013-03-07T23:06:34.813 に答える
2

あなたのスニペットから、trie CharMap.tキーが文字であり、値がtrie再帰的に定義されたタイプであるマップであると推測しています。

于 2013-03-07T23:01:37.813 に答える
1

trie CharMap.t は、Char から trie データ型へのマップ型です。これはパラメータ型を使用します。例えば、

type 'param paired_with_int = int * 'param;;

次に、次のように指定したタイプを作成できます。

type specific_pair = float paired_with_int;;

于 2013-08-01T15:30:49.100 に答える