背景
最近《串并行数据结构与算法设计》的老师在educoder上布置了一些SML程序设计题,虽然网站上有在线编译功能,但还是在线下编译调试方便,特记录编译环境过程如下(我用的GVIM,但Notepad++、Visual Studio Code等编辑器可以类推)
第一步:安装编译器
下载Standard ML of New Jersey(https://www.smlnj.org/),下载完直接一路安装就行,环境变量已经自动配好了。
第二步:配置GVIM
打开GVIM目录下的配置文件_vimrc,加入
func Run()
exec 'w'
if &filetype == 'sml'
exec '!sml < %'
endif
endfunc
map <C-F5> :call Run() <CR>
这段话的意思是按下Ctrl + F5之后GVIM保存当前文件,之后如果当前文件类型是SML则执行命令“sml < 当前sml文件”,把当前sml文件的内容重定向到sml交互命令行程序中执行。
第三步:写程序前的操作
首先复制网站题目编辑器给的输入输出模板到GVIM中,因为sml交互命令行程序的标准输入已经被我们的sml文件占了,所以标准读入函数不能用,所以我们需要在程序的首行添加
val input = TextIO.openIn("input.txt");
接着把程序中所有的TextIO.stdIn替换成input,之后在程序的相同目录建立一个input.txt存储样例输入,然后就可以在模板里的begin和end里面写你自己的内容了。交代码时只要把程序里begin和end里面你写的内容贴到网站题目编辑器里面的begin和end之间就行了。
试一下CSDN多久会复制我这篇文章。