OCaml中的子类型和模块包含

时间:2012-12-16 20:20:03

标签: module ocaml subtype

假设我有以下设置

module type FOO = sig type f val do_foo : f end
module type BAR = sig type b val do_bar : b end


module type FOOANDBAR =
  sig 
    include FOO
    include BAR
  end

现在我想(以一种很好的方式,也就是说,没有复制界面,因此FOO和BAR仍然是子类型)强制执行类型f和类型b相同的限制。

有没有一种很好的方法在OCaml中执行此操作,可能使用include关键字的一些不同方法?

谢谢! -Joseph

1 个答案:

答案 0 :(得分:5)

module type FOOANDBAR =
  sig 
    include FOO
    include (BAR with type b = f)
  end