用SML构建库

时间:2015-05-21 10:08:45

标签: sml polyml

我目前正在使用标准ML(使用Poly / ML作为解释器)构建测试库。我有以下目录结构:

project/a.sml
project/src/b.sml
project/src/c.sml
...

a.sml只是一堆使用

的调用
use "src/b.sml"
use "src/c.sml"
...

b.smlc.sml等都是这样的结构定义

structure ComponentX
struct
...
end

形成了库中不错的,逻辑上分离的组件。我有时也在一个文件中创建一个模块,然后在另一个文件中的同一个模块中引入一个子结构。

然后我可以通过调用use "a.sml"在项目的根目录中使用测试库。

但是,我似乎无法在自己的目录之外使用代码,这有点问题。例如,假设我在project的父目录中。如果我再调用use "project/a.sml",则后续调用use "src/x.sml"会尝试在父目录中找到src目录(该目录不存在)。

有没有办法做亲戚use,还是有更好的方法来完全构建它?

1 个答案:

答案 0 :(得分:4)

Poly / ML中的 std::cout << "This works!" << std::endl; std::wcout << "This also works!" << std::endl; 函数本身在递归使用时不会改变路径。您需要使用use显式更改子目录中的路径。 OS.FileSys.chDir只是一个函数,所以你可以根据需要重新定义它。 useOS.Path结构可能很有用。

另一种方法是重新组织代码以使用OS.FileSys。您必须重命名文件以匹配每个文件包含的结构的名称,例如: ComponentX.sml将包含结构ComponentX。有关详情,请参阅polyml.org/documentation/Reference/PolyMLMake.htmlthis answer关于具有嵌套目录结构的Poly / ML。