首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编译多个SML文件?

如何编译多个SML文件?
EN

Stack Overflow用户
提问于 2016-04-29 21:08:34
回答 1查看 566关注 0票数 3

如何在Standard中编译多个文件?我有两个文件。

file1.sml

代码语言:javascript
复制
(* file1.sml *)
datatype fruit = Orange | Apple | None

file2.sml

代码语言:javascript
复制
(* file2.sml *)
datatype composite = Null | Some of fruit

因此,正如您所看到的,file2.sml正在使用来自file1.sml的东西。我怎样才能让这个东西编译呢?

我正在使用mosmlc.exe并在编译mosmlc file2.sml (如这个问题)时:

代码语言:javascript
复制
(* file2.sml *)
use "file1.sml";
datatype composite = Null | Some of fruit

我得到:

代码语言:javascript
复制
! use "file1.sml";
! ^^^
! Syntax error.

那么,如何处理多个文件呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-29 21:39:56

您可以在莫斯科ML业主手册中阅读更多内容,但在特定情况下,下面的命令应该可以工作,甚至不必在源代码中使用use

代码语言:javascript
复制
mosmlc -toplevel file1.sml file2.sml

使用结构模式

当您想将代码组织到结构中时,可以使用-structure标志mosmlc。例如,给定以下文件:

Hello.sml

代码语言:javascript
复制
structure Hello =
  struct
    val hello = "Hello"
  end

World.sml

代码语言:javascript
复制
structure World =
  struct
    structure H = Hello

    val world = H.hello ^ ", World!"
  end

main.sml

代码语言:javascript
复制
fun main () =
  print (World.world ^ "\n")

val _ = main ()

现在您可以获得一个名为main的可执行文件,如下所示:

代码语言:javascript
复制
mosmlc -structure Hello.sml World.sml -toplevel main.sml -o main

然后运行它:

代码语言:javascript
复制
$ ./main
Hello, World!

结构模式要求文件的名称与包含的结构重合,就像Java类和文件必须具有相同的名称一样。您还可以使用包含签名的.sig文件。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36947466

复制
相关文章

相似问题

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