微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何与 SML 和 CM 共享数据类型声明

如何解决如何与 SML 和 CM 共享数据类型声明

我对在我用 CM 编译的 SML 项目中的另一个 SML 文件中使用来自一个 SML 文件的定义感到有些困惑。 A.sml 似乎只能使用来自 B.sml 的签名和结构定义,前提是它们已在 project.cm 文件中声明。

我想在 datatype MyType = MyConstr {name:string,other: string} 中声明一个 B.sml,并在 MyType 中构造该类型 A.sml 的值。如果我正确理解 CM 文档,我只能导出结构、签名、函子和函子签名。这在代码重用方面听起来相当有限。

现在,这是否意味着我的 MyType 需要成为签名结构的一部分,以便我可以从另一个模块中使用它?

解决方法

您是正确的(在顶层)您只能导出模块,但这并不意味着您只能在一个文件中使用签名和结构定义(如果它们在 .cm 文件中描述) --- 只是需要通过 source(-)(或类似方法)直接或间接提及它们,以便在库外部使用。

假设您想在 A.sml 中使用 B.sml 中的某个模块,并且您唯一的目标是从 structure Foo 中公开 B.sml,然后类似

Library
    structure Foo
is
    A.sml
    B.sml

应该够了。如果您还没有阅读 CM documentation(第 8-9 页)的 2.5 和 2.6 部分,您可能还想阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。