首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Poly构建嵌套目录结构的项目

使用Poly构建嵌套目录结构的项目
EN

Stack Overflow用户
提问于 2015-03-28 09:59:56
回答 2查看 377关注 0票数 2

到目前为止,我一直在几个小项目中使用Poly,其中所有的源代码文件都在同一个目录中。要构建这些项目,我所要做的就是在REPL中运行以下命令:

代码语言:javascript
复制
> PolyML.make "Main";

但是现在我有了一个项目,它的规模使得将所有源代码文件放在同一个目录中是不切实际的。要在REPL中构建这些项目,我需要运行以下命令:

代码语言:javascript
复制
> PolyML.make "foo/Foo";
> PolyML.make "bar/Bar";
> PolyML.make "qux/Qux";
> PolyML.make "Main";

这并不是很实际,因为子系统的数量增加。

有什么方法可以使在Poly中使用嵌套目录结构构建项目的过程自动化吗?

P.D.:我看过SML/NJ的编译管理器和MLton的ML基础系统。虽然它们无疑是强大的,但对于我的需要来说,它们太复杂了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-29 16:37:24

在每个子目录中放置一个名为ml_bind.ML的文件,并让这些文件为该目录构建组件。

PolyML.make期望源文件的名称与组件的名称(结构、签名或函子)相匹配。因此,如果它正在寻找一个名为"Foo“的结构,它将期望在一个名为"Foo”、"Foo.ML“或"Foo.sml”的文件中找到"Foo“的源代码。如果它找到一个名为"Foo“的目录,则递归地进入"Foo”目录,并使用"ml_bind.ML“文件作为构建"Foo”结构的指南。通常,"Foo/ml_bind.ML“将类似于

代码语言:javascript
复制
structure Foo = FooFunctor(structure A = FooA and B = FooB);

文件"Foo/FooFunctor.ML“、"Foo/FooA.ML”和"Foo/FooB.ML“分别包含"FooFunctor”、"FooA“和"FooB”的源代码。

您可以在Poly编译器的代码中找到这方面的示例,该编译器是Poly/ML源代码分发的一部分。

票数 5
EN

Stack Overflow用户

发布于 2015-03-28 14:21:58

您可以有一个build.sml文件列表和use-ing all项目文件:

代码语言:javascript
复制
use "bar/bar.sml";
use "foo/foo.sml";
use "main.sml";

或者,更简洁一点:

代码语言:javascript
复制
app use [
  "foo/foo.sml",
  "bar/bar.sml",
  "main.sml"
]

其中app是标准的List.app

然后,您可以只构建这一个文件:

代码语言:javascript
复制
$ polyc -o main main.sml
$ # or
$ poly
> PolyML.make "build.sml"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29315827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档