SML / NJ Basis Library无法在Windows 10中运行

时间:2016-01-15 04:26:28

标签: sml smlnj

我在Windows 10上使用最新版本的SMLNJ(110.79)。

我似乎无法使用任何SML Basis Library函数。

以下是我尝试使用List.filter

的示例
fun isOdd nmbr = (nmbr mod 2) = 1;
List.filter isOdd [1,2,3,4,5];

这会产生以下错误

  SML / NJ中的意外异常(bug?):Io [Io:openIn failed on" C:\ cygwin \ home \ larsberg \ smlnj2 \ sml.boot.x86-win32 \ smlnj \ basis.cm \ x86-win32 \ basis.cm",win32-bin-prim-io:checkHndl:openRd:failed]     提出于:Basis / Implementation / IO / bin-io-fn.sml:617.25-617.71                ../cm/util/safeio.sml:30.11                ../编译器/顶层/交互/ evalloop.sml:44.55

Basis库中的其他函数会产生相同的错误,例如Real.fromInt

关于this answer的评论指出了类似的问题,但我不确定如何继续。

我错过了一些简单的东西吗?谢谢!

编辑:

卸载并重新安装几次后,似乎正常工作。我暂时不开这个问题,因为我真的不知道是什么让它真正起作用。

List.filter;提供了此输出

[autoloading]
[library $SMLNJ-BASIS/basis.cm is stable]
[library $SMLNJ-BASIS/(basis.cm):basis-common.cm is stable]
[autoloading done]
val it = fn : ('a -> bool) -> 'a list -> 'a list

2 个答案:

答案 0 :(得分:2)

当移动安装的目录或未设置SMLNJ主环境时,会发生这种情况。基本上sml无法找到basis.cm文件,该文件应存在于$ SMLNJ_HOME子目录中。因此,通过在 $ SMLNJ_HOME 中设置安装路径解决了我的问题。

  $SMLNJ_HOME=~/ws/CSCI-5161/sml

答案 1 :(得分:0)

我在Windows 7上但是遇到了同样的错误。 Windows安装程序将程序放在Program Files(x86)/ SMLNJ中。我将SMLNJ文件夹移动到Program Files /,现在不再收到错误。