包含嵌套结构的签名

时间:2014-08-10 13:16:33

标签: module sml signature smlnj

module-a.sig中,我有:

signature FOO = sig
  structure Bar: sig
    end
end

对应module-a.sml,如下所示:

structure Foo: FOO = struct
  structure Bar = struct 
    end
  end 

module-b.sml中,我需要编写一些扩展Foo中所有类型的内容。它看起来像这样:

structure Baz: BAZ = struct 
  structure Bat = struct 
    open Foo.Bar
    end
  end

如何为Baz写一个签名,表明它内部有FOO.Bar个内容?如果Bar是顶级的,并且有一个名为BAR的签名,我会写:

signature BAZ = sig
  structure Bat: sig
    include BAR
  end
end

但我无法在此处执行此操作,因为没有名为BAR的顶级签名。我试过了:

signature BAZ = sig
  structure Bat: sig
    include FOO.Bar
  end
end

但是这导致语法错误。我也尝试过:

signature BAZ = sig
  include FOO
  structure Bat: sig
    include Bar
  end
end

但是这给了我"错误:未绑定的签名:Bar"。

可以这样做吗?我可以避免在某处为Bar写出顶级签名吗?

0 个答案:

没有答案