在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
写出顶级签名吗?