对于任何一种编程语言,除了需要了解如何编写外,还需要了解如何运行以及解决运行中出现的错误(也就是调试)。
在Emacs上编写Standard ML语言,可以使用REPL环境运行sml代码。
REPL时read-evaluate-print-loop的缩写。
快捷键Control-c Control-s进入REPL环境。
快捷键Control-d退出REPL环境。
在REPL环境下可以直接编码运行,也可以使用use filename.sml来运行文件中的代码。
任何一种语言编译或运行时出错可以从三个方面找原因:
syntax语法错误:这个编译阶段就能检测出来。
type-checking类型检查错误:编译阶段检测(没有找到对应的类型,表达式里的类型不对等等)。
Evaluation计算错误:要么产生一个错误的结果(程序逻辑错误),异常错误(链接错误等),无限循环。
在REPL环境里运行sml代码,需要syntax语法完全正确后才进行type-checking类型检查, 在type-checking类型检查完全正确后才进行Evaluation计算。
调试来解决上述问题。
但会存在如下难点:
1. 不知道为什么程序运行错误,特别是程序逻辑上的错误,编译运行报的错误对此没有帮助。
1. 编译运行报错的信息并不是都很直接的,通过报错并不能很快get到问题原因。
在REPL环境下,点击报错信息,会定位到代码文件的报错行。(这个功能Nice)