2013-05-14 1 views
5

Ich habe airport.mli und airport.ml.Wie kann ich ein Modul (eigentlich ein Set.Make) in der mli-Datei deklarieren?


In airport.ml, ich habe

module AirportSet = Set.Make(struct type t = airport let compare = compare end);; 

Das ist kein Problem.


I haben dann eine Funktion

val get_all_airport : unit -> AirportSet.t;; 

, die eine AirportSet erzeugt.


so in airport.mli, muss ich zeigen, die module AirportSet so AirportSet erkannt wird.

Wie kann ich das tun?

Antwort

10
module AirportSet : (Set.S with type elt = airport) 

(Die Pars sind eigentlich nicht notwendig, sie dort setzen, so dass Sie wissen, dass dies eine Signatur ist zu erwarten, im allgemeinen Fall der Form sig ... end).

0

Die elegante Lösung wurde wurde vorgeschlagen; eine pragmatische/straight forward/naive Lösung ist einfach die ocaml-Compiler zu verwenden ocamlc (-i) für Sie die Art des Moduls zu schließen:

ocamlc -i airport.ml 

, die Ihnen eine ausführlichere Art wie

AirportSet : 
    sig 
    type elt = airport 
    type t 
    val empty : t 
    val is_empty : t -> bool 
    val mem : elt -> t -> bool 
... 
    val split : elt -> t -> t * bool * t 
end 
gibt
Verwandte Themen