SMLNJ REPL 错误“!* 无法处理...”

SMLNJ REPL error "!* unable to process ..."

我在 Mac OS X 10.9 上使用 SML NJ v110.78。我正在尝试使用来自 BASH 的命令行参数,如下所示:

sml progname.sml 2.0 1.0.  

程序progname.sml编译并运行并使用命令行参数产生一个值(使用SMLofNJ.getArgs()函数),但在处理结束时,REPL returns错误:

!* unable to process `2.0' (unknown extension `0')
!* unable to process `1.0' (unknown extension `0')
-

如何避免这些最终错误消息?

谢谢。

您需要使用退出语句终止 REPL:

val _ = OS.Process.exit(OS.Process.success);

当你没有以上述方式退出 REPL 时,命令行参数将被解释器视为编译器扩展,因此反馈:

!* unable to process `2.0' (unknown extension `0')

顺便说一句:您可以使用 OS.Process.exit(OS.Process.success); 退出 REPL 作为 CTRL+Z

的更简洁的替代方法

How do I quit SML?

ML Command Line Options Cheat Sheet