【发布时间】:2016-04-15 20:36:00
【问题描述】:
我正在使用 SML/NJ 110.79,其中包括对 Successor ML 项目定义的新结构的支持。其中包括Fn 结构。
碰巧的是,我已经在my personal project with utilities 之一中有一个同名结构,它在 110.79 之前运行良好。
对于 110.79,对于这个 .cm 文件:
group is
$/basis.cm
$SMACKAGE/sml-extras/v0.1.0/sources.sml.cm
我收到以下错误:
sources.cm:3.3-3.45 错误:结构 Fn 导入自 $SMLNJ-BASIS/(basis.cm):basis-common.cm@155252(fn.sml) 也来自 $SMACKAGE/sml-extras/v0.1.0/(sources.sml.cm):src/fn.sml
有谁知道如何通过编译管理器解决这个冲突。理想情况下,我的 Fn 结构将能够通过 open-ing 来“扩展”标准 Fn,但使用 sml-extras 库的项目将看不到标准 Fn 结构,只有我的扩展版本。
这可能吗?我需要在我的 sml-extras.cm 项目中包装/重新导出整个 basic.cm 库吗?
【问题讨论】:
-
有趣的问题。最简单的解决方法是更改您的
Fn版本的名称(例如更改为Fnct)。编译管理器确实具有条件编译功能。此外——新版本的发行说明就如何处理新功能破坏旧代码的情况提供了一些建议。 -
@JohnColeman 重命名结构是我的最后一个选择 :) 暂时,我已更改为使用 $/basis-2004.cm,而不是新的,只是为了编译代码。