6

我有airport.mliairport.ml


airport.ml,我有

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

这没有问题。


然后我有一个功能

val get_all_airport : unit -> AirportSet.t;;

, 生成一个AirportSet.


所以在 中airport.mli,我需要证明module AirportSetsoAirportSet是被认可的。

我怎样才能做到这一点?

4

2 回答 2

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

(括号实际上是不必要的,将它们放在那里以便您知道这是预期的签名,在一般情况下 form sig ... end)。

于 2013-05-14T16:22:50.120 回答
0

优雅的解决方案是gasche提出的;一个更务实/直接/天真的解决方案是简单地使用 ocaml-compilerocamlc为您推断 ( -i) 模块的类型:

ocamlc -i airport.ml

这给了你一个更详细的类型,比如

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
于 2013-05-23T10:32:24.170 回答