我有airport.mli
和airport.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 AirportSet
,以便AirportSet
被识别。
我该怎么做?
答案 0 :(得分:11)
module AirportSet : (Set.S with type elt = airport)
(parens实际上是不必要的,把它们放在那里,以便你知道这是一个预期的签名,在sig ... end
形式的一般情况下。
答案 1 :(得分:0)
优雅解决方案是加油提议;一个更实用/直接/天真的解决方案是简单地使用ocaml-compiler ocamlc
来推断(-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