如何在代码在Notepad ++中时使用SMLNJ编译SML?

时间:2016-03-21 07:55:11

标签: compilation notepad++ sml smlnj

我对SML完全陌生,我不知道如何处理与之相关的任何事情。 我应该使用SMLNJ编译器,我目前使用Notepad ++进行编码。 但是如何完全编译程序呢?我是否将代码复制并粘贴到SMLNJ命令行中?或者是否有一个SMLNJ环境我可以实际编码并编译我的代码? 请帮助!

1 个答案:

答案 0 :(得分:1)

如果通过"编译"你的意思是"编译成一个独立的可执行文件" - 在第一次学习语言作为完整答案时,不要担心这一点。原则上有可能,虽然似乎存在实际问题(如this出色的答案细节)。

另一方面,SML / NJ有一个基于命令行的REPL(Read-Evaluate-Print-Loop),它实际上编译器。它是incremental compiler - 意味着它在当前定义的函数的上下文中编译新定义的函数。在最初,您将尝试直接输入REPL的短片段。很快你会想要用像NotePad ++这样的代码来编写代码。只需编写文件,使用.sml扩展名保存,然后使用REPL类型

use "filename"; 

并加载并编译您的定义。

我有时使用的技巧如下。在我的文件的顶部,我有这样的评论:

(*   val _ = (use "C:/Programs/sets.sml", OS.Process.system "cls");      *)

这里sets.sml碰巧是我机器上的SML文件。当我完成编辑文件后,我将其保存,然后将注释的内部(以val开头并扩展到分号)复制到剪贴板,然后将其粘贴到打开的SML REPL中(使用编辑菜单当您点击命令窗口左上角的图标时弹出的命令窗口)。这将加载定义,并为您提供已清除的REPL,用于试验您的定义。

Notepad ++似乎缺少SML的语法定义文件(虽然它有一个用于F#,可能足够接近)。就个人而言,我使用Textpad完成了大部分SML。这不是开源的,但价格合理nagware,与Notepad ++大致相当。在他们的网站上,您可以下载一个有用的SML语法定义文件,该文件可以很好地逻辑突出显示您的代码。我甚至创建了一个Textpad工具(由于不明原因只能偶尔工作),用于自动保存文件,打开SML,并在文件名上调用use