我知道我们可以定义两种相互链接的类型,例如:
type a =
| CC of b
and b =
| CD of a
有谁知道如何为两个模块做同样的事情?
module A = struct
type t = | CC of B.t
end
?and? B = struct
type t = | CD of A.t
end
答案 0 :(得分:4)
在OCaml中称为recursive modules。你不得不两次写出类型声明,这有点不幸。
module rec A: sig
type t = | CC of B.t
end =
struct
type t = | CC of B.t
end
and B: sig
type t = | CD of A.t
end =
struct
type t = | CD of A.t
end