我必须用 ML 编写一些代码,这是我第一次使用该语言。
是否有标准 ML 的开发环境? (最好在 Windows 下)。我尝试使用谷歌搜索(和 stackOverFlowing !),但我发现的只是 Linux 的普通编译器(最多带有交互式控制台),但没有 IDE 或 Eclipse/NetBeans 插件。
有什么建议 ?
请您参考如下方法:
如何使用 Sublime Text 2 配置 SML
对于那些更喜欢 Sublime Text 而不是 Emacs 作为编程 SML 的首选编辑器的人,以下指南描述了如何配置 Sublime Text 以使用 SML。
要使本指南对您有用,您必须已经安装 smlnj .
第 1 步:安装 Sublime Text 和 Package Control
从 Downloading Sublime Text 2 开始.确保下载第 2 版,因为 SML 语法支持不适用于第 3 版。
Sublime Text 支持一组惊人的软件包(即插件),您可以单独安装它们。这些包之一称为包控制。您必须先Install Package Control能够直接从编辑器安装其他软件包。提供的链接解释了安装此软件包所需的操作。
第 2 步:安装 SML 和 Sublime REPL
现在您已经安装了包控制,安装其他包将变得非常容易。我们现在必须安装两个包:支持编程语言语法高亮功能的 SML 和 SublimeREPL,正如您可能猜到的,它是一个包,它为 Sublime Text 添加了许多不同编程语言的 REPL 功能。
要安装这些软件包,您必须转到菜单并查找工具 -> 命令面板并键入“安装软件包”。在搜索框中,输入要安装的软件包的名称,从找到的列表中选择您的软件包,然后按 Enter 以安装它。对上面提到的两个包执行此操作:“SML”和“SublimeREPL”
一旦您安装了 SML 包,如果您打开一个 SML 文件,您应该在编辑器中获得语法高亮功能。它甚至提供了一个名为 Son of Obsidian 的 Sublime Text 主题,您可以在 Preferences -> Color Scheme -> SML -> Son of Obsidian 中启用它。但是您不需要启用主题以使用 SML,这只是一个偏好。
安装 SublimeREPL 包后,您将能够转到菜单 Tools -> SublimeREPL -> SML 并打开 SML REPL session ,该 session 将支持使用 SML 包的语法突出显示、命令历史记录、行编辑和自动完成。如果您打开两个并排选项卡,您可以让您的生活变得非常轻松,在您的左侧选项卡中,您可以拥有 SML 代码文件,而在右侧,您可以拥有 SML REPL session 。您可以通过使用 View -> Layout 选项来做到这一点。
第 3 步:键盘快捷键
现在让我们添加一些键盘快捷键来使用 REPL。 SublimeREPL 包提供的键盘配置很少,而且所提供的配置可能无法与 SML REPL 配合使用。所以这就是我通常所做的。
Default.sublime-commands
在 Sublime Text 本身。该文件包含 Tools -> SublimeREPL 菜单中的当前 SML 菜单选项。因此,我们现在将更改它以创建第二个选项,该选项可以在新的 SML REPL session 中运行现有文件。我编辑的文件如下所示。注意“id”字段。我们可以根据需要定义任意数量的不同命令,给它们一个不同的 ID。在下一步中,我们将定义每个命令的作用。[
{
"caption": "SublimeREPL: SML",
"command": "run_existing_window_command", "args":
{
"id": "repl_sml",
"file": "config/SML/Main.sublime-menu"
}
},
{
"caption": "SublimeREPL: SML - Run File",
"command": "run_existing_window_command", "args":
{
"id": "repl_sml_run",
"file": "config/SML/Main.sublime-menu"
}
}
]
Main.sublime-menu
文件。该文件包含上面定义的每个命令应该做什么的详细信息。我编辑的文件定义了上面描述的两个命令,一个是简单地打开 REPL,另一个是在 REPL 中打开当前文件。它看起来如下:[
{
"id": "tools",
"children":
[{
"caption": "SublimeREPL",
"mnemonic": "r",
"id": "SublimeREPL",
"children":
[{
"caption": "SML",
"id": "SML",
"children": [
{"command": "repl_open",
"caption": "SML",
"id": "repl_sml",
"args": {
"type": "subprocess",
"encoding": "utf8",
"cmd": ["sml"],
"cwd": "$file_path",
"external_id": "sml",
"syntax": "Packages/SML (Standard ML)/sml.tmLanguage"
}
},
{"command": "repl_open",
"caption": "SML - Run Current File",
"id": "repl_sml_run",
"args": {
"type": "subprocess",
"encoding": "utf8",
"cmd": ["sml", "$file_basename"],
"cwd": "$file_path",
"external_id": "sml",
"syntax": "Packages/SML (Standard ML)/sml.tmLanguage"
}
}
]
}]
}]
}
]
[
{
"keys":["ctrl+alt+j","k"],
"command": "repl_open",
"args": {
"type": "subprocess",
"encoding": "utf8",
"cmd": ["sml"],
"cwd": "$file_path",
"syntax": "Packages/SML (Standard ML)/sml.tmLanguage",
"external_id": "sml"
}
} ,
{
"keys":["ctrl+alt+j","m"],
"command": "repl_open",
"args": {
"type": "subprocess",
"encoding": "utf8",
"cmd": ["sml", "$file_basename"],
"cwd": "$file_path",
"syntax": "Packages/SML (Standard ML)/sml.tmLanguage",
"external_id": "sml"
}
}
]
我们已经完成了。现在,您只需按 CTRL+J,K(即按 Ctrl+Alt+J,然后松开键并按 K)即可打开 SML REPL。如果您当前正在处理 SML 文件,则可以按 CTRL+J,M 将其发送到新的 SML REPL session 。
第 4 步:构建系统
Sublime Text 提供的配置允许您解析代码文件并确定是否有问题,并让您确切知道问题出在哪里。为了做到这一点,我们必须配置一个“构建系统”。配置只是一个文件,告诉 sublime text 要运行什么命令以及如何解释输出。如果 sml 解析器无法解析或执行您的程序,则输出会告诉您问题出在哪里。构建系统让我们定义一个正则表达式来解析这样的输出并帮助 Sublime text 找到包含问题的行和列。
转到 Preferences -> Browse Packages 并在 User 文件夹下创建一个名为
SML.sublime-build
的新文件。并定义文件如下:
{
"cmd": ["/usr/local/bin/sml","$file"],
"selector": "source.sml",
"working_dir": "$file_path",
"file_regex": "^(.*\\.sml):(\\d+)\\.(\\d+)(\\-(\\d+)\\.(\\d+))?\\s(.*)$"
}
确保用系统中的有效路径替换命令路径。保存文件后,您可以转到菜单并选择工具 -> 构建系统 -> SML。然后,要检查您的文件,您可以执行 Tools -> Build 来解析您的文件并查找任何错误。通过使用菜单选项 Tools -> Build Result -> Next Result 和 Previous Result 您可以在构建系统选项检测到的错误之间导航,Sublime Text 会将光标定位在 SML 编译器报告的错误的确切位置.
我上面的正则表达式可能不是最好的,所以请随时根据您的需要改进它。
就是这样。您已经准备好开始使用 SML 和 Sublime Text 进行编码了。