SML/NJ Basis Library 在 Windows 10 中不起作用



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

我似乎无法使用任何 SML 基础库函数。

这是我尝试过的一个例子List.filter

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

这将产生以下错误

SML/NJ 中的意外异常(错误?):Io [Io: openIn 在 "C:\cygwin\home\larsberg\smlnj2\sml.boot.x86-win32\smlnj\basis.cm\x86-win32\basis.cm", win32-bin-prim-io:checkHndl: openRd: failed] 提出于:基础/实现/IO/bin-io-fn.sml:617.25-617.71 ../cm/util/safeio.sml:30.11 ../compiler/TopLevel/interact/evalloop.sml:44.55

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

关于这个答案的评论指向了一个类似的问题,但我不确定如何继续。

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

编辑:

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

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

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

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

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

最新更新