No puedo entender la declaración de tipo trie de OCaml

Estoy tratando de entender cómo la gente escribe trie en OCaml. Hay un ejemplo que encontré en línea:

Define un mapa:

module CharMap = Map.Make(Char)

Luego define el tipo de 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

Aquí está mi problema: ¿qué es trie CharMap.t? Supongo que es algún tipo de mapa, pero no puedo entender qué es.

Muchas Gracias

preguntado el 07 de marzo de 13 a las 22:03

3 Respuestas

Para ampliar la respuesta de rgrinberg: en OCaml, los constructores de tipos vienen después de sus parámetros. Así que tienes int list, que es una lista de enteros. Aquí tienes un constructor de tipos. CharMap.t que construye mapas cuyas claves son de tipo char. Así que, int CharMap.t sería un mapa de charpara ints. El significado de trie CharMap.t es completamente análoga, excepto posiblemente por el hecho de que (como señala rgrinberg), este es un uso recursivo del tipo trie. Es similar a la definición de un árbol, en que las cosas contenidas en los nodos del árbol son árboles en sí mismas. Aquí, las cosas contenidas en el trie son ellas mismas tries.

respondido 07 mar '13, 23:03

Por tu fragmento, supongo trie CharMap.t es un mapa donde las claves son caracteres y los valores son de tipo trie que se define recursivamente.

respondido 07 mar '13, 23:03

trie CharMap.t es un tipo de mapa de Char a tipo de datos trie. Esto utiliza el tipo de parámetro. Por ejemplo,

escriba 'param paired_with_int = int * 'param;;

entonces puede hacer un tipo específico de la siguiente manera:

tipo par_específico = float emparejado_con_int;;

Respondido 01 ago 13, 16:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.