我对SML完全陌生,我不知道如何处理与它相关的任何东西。我应该使用SMLNJ编译器,目前我正在使用Notepad++编写代码。但是如何准确地编译程序呢?我是否在SMLNJ命令行中复制并粘贴代码?或者,是否有一个SMLNJ环境,我实际上可以在其中编码并编译我的代码?请帮帮忙!
发布于 2016-05-15 15:28:55
如果你所说的“编译”指的是“编译成一个独立的可执行文件”原则上,这是可能的,虽然似乎有实际的问题(如这优秀的回答细节)。
另一方面,SML/NJ有一个基于命令行的REPL (读-评估-打印-循环),它实际上是一个编译器。它是一个增量编译器 --意思是在当前定义的函数的上下文中编译新定义的函数。在第一阶段,您将尝试直接输入REPL的短片段。您迟早会想要用类似于NotePad++的语言编写代码。只需编写文件,用.sml扩展名保存它,然后在REPL类型中
use "filename"; 它加载并编译您的定义。
我有时使用的一个技巧如下。在我的文件顶部,我有这样的评论:
(* val _ = (use "C:/Programs/sets.sml", OS.Process.system "cls"); *)这里,sets.sml恰好是我的机器上的一个SML文件。编辑完文件后,我保存它,然后将注释的内部(以val开头并扩展到分号)复制到剪贴板,然后将其粘贴到打开的SML中(使用命令窗口的编辑菜单,当单击命令窗口左上角的图标时会弹出)。这将加载定义,并为您提供一个已清除的REPL,以便对您的定义进行实验。
Notepad++似乎缺少SML的语法定义文件(尽管它有一个用于F#的语法定义文件,这可能足够接近)。就我个人而言,我大部分的SML都是使用Textpad完成的。这不是开源,但定价合理的陶器与Notepad++大致相当。从他们的网站,你可以下载一个有用的SML语法定义文件,这做了一个很好的工作,逻辑突出你的代码。我甚至创建了一个Textpad工具(由于未知原因只能偶尔工作),用于自动保存文件、打开SML和调用文件名上的use。
https://stackoverflow.com/questions/36125649
复制相似问题