2011-02-02 13 views
7

Tengo un archivo donde context.ml un mapa se defineOcaml: Exportación de un tipo en un archivo MLI

module CtxMap = Map.make(struct type t = int let compare = compare end) 

y una función map_get con el tipo CtxMap.key -> 'a CtxMap.t -> 'a

¿Cómo se añade a la declaración CtxMap el archivo context.mli? No puedo encontrar una manera de hacerlo ya que los archivos mli no pueden contener código.

Respuesta

8
module CtxMap : Map.S with type key = int 

En el archivo map.ml provisto con ocaml, el nombre de la firma para el funtor es S y key es el único tipo abstracto que desea exponer a los módulos externos.

6

Como referencia, siempre se puede hacer:

ocamlc -i -c context.ml 

para dar salida al archivo predeterminado .mli a la salida estándar. El único problema con esto (en su caso) es que amplía la firma del mapa.

+1

Querrá agregar '-c' para evitar agregar en todas las dependencias --esta opción compila, pero no enlaza. – nlucaroni

+0

Buena llamada - Editaré mi publicación. –

Cuestiones relacionadas