【问题标题】:How to compile SML using SMLNJ while the code is in Notepad++?当代码在 Notepad++ 中时,如何使用 SMLNJ 编译 SML?
【发布时间】:2016-03-21 07:55:10
【问题描述】:

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

【问题讨论】:

  • 如果“编译”是指“编译为独立的可执行文件”——现在不要担心。 SML/NJ 有一个基于命令行的 REPL (Read-Evaluate-Print-Loop),它实际上一个增量编译器——这意味着它在当前定义的函数的上下文中编译新定义的函数。首先,您将尝试直接输入 REPL 的短 sn-ps。迟早你会想用 NotePad++ 之类的东西编写代码。只需编写文件,使用 .sml 扩展名保存它,然后在 REPL 中键入 use "filename"; 并加载。
  • @JohnColeman:愿意发布这个答案吗?
  • @ruakh 我很犹豫是否要这样做,但你的评论激励我扩展它。

标签: compilation notepad++ sml smlnj


【解决方案1】:

如果您所说的“编译”是指“编译为独立的可执行文件”——不要担心第一次学习该语言时会涉及到完整的答案。原则上这是可能的,尽管似乎存在实际问题(如this优秀的答案细节)。

另一方面,SML/NJ 有一个基于命令行的 REPL(Read-Evaluate-Print-Loop),它实际上一个编译器。这是一个incremental compiler——意味着它在当前定义的函数的上下文中编译新定义的函数。首先,您将尝试直接输入 REPL 的短 sn-ps。迟早你会想用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-14
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多