Saj*_*ani 27 ide compiler-construction programming-languages ml sml
我必须在ML中编写一些代码,这是我第一次使用该语言.标准ML是否有任何开发环境?(最好在Windows下).我尝试使用googling(和stackOverFlowing!),但我发现的只是Linux的简单编译器(最多使用交互式控制台),但没有IDE或Eclipse/NetBeans插件.有什么建议 ?
Edw*_*rzo 21
对于那些喜欢使用Sublime Text而不是Emacs作为编程SML的编辑器的人,以下指南描述了如何配置Sublime Text以使用SML.
要使本指南适合您,您必须已经安装了smlnj.
首先下载Sublime Text 2.确保下载版本2,因为SML语法支持尚不适用于版本3.
Sublime Text支持一组可以单独安装的令人惊奇的软件包(即插件).其中一个包称为包控制.您必须首先安装Package Control才能直接从编辑器安装其他软件包.提供的链接说明了安装此软件包需要执行的操作.
现在您已经安装了Package Control,安装其他软件包非常容易.我们现在必须安装两个软件包:SML支持编程语言的语法高亮功能和SublimeREPL,正如您可能猜到的那样,它是一个将许多不同编程语言的REPL功能添加到Sublime Text的软件包.
要安装这些软件包,您必须转到菜单并查找工具 - >命令选项板,然后键入"安装软件包".在搜索框中,您可以编写要安装的软件包的名称,从找到的列表中选择软件包,然后按Enter键以安装它.对上面提到的两个包执行此操作:"SML"和"SublimeREPL"
一旦安装了SML包,如果打开SML文件,您应该在编辑器中获得语法高亮功能.它甚至提供了一个名为Son of Obsidian的Sublime Text Theme,您可以在Preferences - > Color Scheme - > SML - > Son of Obsidian中启用它.但是您不需要启用主题来使用SML,这只是一个偏好.
一旦安装了SublimeREPL包,您就可以进入菜单Tools - > SublimeREPL - > SML并打开一个SML REPL会话,该会话将支持使用SML包进行语法突出显示,以及命令历史记录,行编辑和自动完成.如果你打开两个并排的标签,你可以让你的生活变得非常简单,在你的左侧标签中,你可以拥有你的SML代码文件,在你的右边,你可以使用SML REPL会话.您可以使用"视图" - >"布局"选项来完成此操作.
现在让我们添加几个键盘快捷键来使用REPL.SublimeREPL包提供了很少的键盘配置,并且提供的那些可能无法与SML REPL一起使用.所以这就是我通常做的事情.
Default.sublime-commands在Sublime Text中编辑文件.此文件包含Tools - > SublimeREPL菜单中的当前SML菜单选项.因此,我们现在将更改它以创建第二个选项,该选项可以在新的SML REPL会话中运行现有文件.我编辑的文件如下所示.注意"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"
}
}
]
Run Code Online (Sandbox Code Playgroud)现在,在与上一个文件相同的目录中,编辑该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"
}
}
]
}]
}]
}
]
Run Code Online (Sandbox Code Playgroud)最后一步是为这两个命令添加键盘快捷键.转到首选项 - >键绑定用户,并使用以下两个附加命令编辑该文件.您可以随意更改我的密钥并使用您认为合适的其他快捷键,前提是它们不用于其他功能.
[
{
"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"
}
}
]
Run Code Online (Sandbox Code Playgroud)我们已经完成了.现在,您只需按开SML REPL CTRL+ J,K (这是按Ctrl + Alt + J,然后松开键,然后按K).如果您当前正在使用SML文件,则可以按CTRL+ J,M将其发送到新的SML REPL会话.
Sublime Text提供的配置允许您解析代码文件并确定是否有错误,并让您确切知道问题所在.为此,我们必须配置"构建系统".配置只是一个文件,告诉sublime文本运行什么命令以及如何解释输出.如果sml解析器无法解析或执行您的程序,那么输出会告诉您问题所在.构建系统允许我们定义一个正则表达式来解析这样的输出,并帮助Sublime文本找到包含问题的行和列.
转到首选项 - >浏览包,然后在用户文件夹下创建一个名为的新文件SML.sublime-build,并按如下方式定义文件:
{
"cmd": ["/usr/local/bin/sml","$file"],
"selector": "source.sml",
"working_dir": "$file_path",
"file_regex": "^(.*\\.sml):(\\d+)\\.(\\d+)(\\-(\\d+)\\.(\\d+))?\\s(.*)$"
}
Run Code Online (Sandbox Code Playgroud)
确保使用系统中的有效路径替换命令路径.保存文件后,可以转到菜单并选择"工具" - >"构建系统" - >"SML".然后,要检查您的文件,您可以执行工具 - >构建来解析您的文件并查找任何错误.通过使用菜单选项工具 - >构建结果 - >下一个结果和上一个结果,您可以在构建系统选项检测到的错误之间导航,而Sublime Text将光标定位在SML编译器报告的错误的确切位置.
我上面的正则表达式可能不是最好的,所以请随意根据自己的需要进行改进.
就是这样.您已准备好开始使用SML和Sublime Text进行编码.
Mak*_*ius 20
您可以使用Isabelle/jEdit作为Isabelle/ML的IDE或官方标准ML(SML'97).基础ML系统是Poly/ML,它以支持多核硬件而着称.
严格来说,Isabelle环境用于交互式和自动化定理证明,但其SML IDE支持非常复杂:源文件在用户编辑时进行静态检查和语义评估.带注释的源包含有关推断类型的标记,对定义项目位置的引用等.
快速入门,请参阅"文档"面板的"示例"条目src/Tools/SML/Examples.thy(截至Isabelle2014).

Oak*_*Oak 11
在Windows上使用SML时,我一直在使用SML/NJ进行编译,使用Notepad ++进行编辑(Notepad ++具有Caml的语法着色,根据您的需要,它应该与SML相同).
如上所述,对于ML,一个简单的编辑器就足够了.
对于SML,存在一些Emacs模式.有关更多信息,请查看http://mlton.org/Emacs.
sml-mode应该为您提供编写SML代码的良好环境.Eclipse&Co.的开发是因为java需要很多样板资源,如访问器,适配器等.如果您需要ML的相同功能,那么您应该仔细检查您是否没有过度工程.
编辑:顺便说一下,SMLNJ附带了一个eclipse插件.我不能发布一个链接,只是google for smlnj eclipse.
小智 6
我正在为Windows开发Scheme IDE.它被称为"巴贝奇".它还具有OCaml和SML的模式.它就像一个最小的Emacs.巴贝奇非常简单,并且有像键分配的窗口.Babbage是Unicode编辑器.
http://homepage1.nifty.com/~skz/Entry/babbage.html