我在Windows10上使用最新版本的SMLNJ (110.79)。
我似乎不能使用任何SML基础库函数。
下面是我用List.filter尝试过的一个例子
fun isOdd nmbr = (nmbr mod 2) = 1;
List.filter isOdd [1,2,3,4,5];这会产生以下错误
意外异常(bug?)在SML/NJ: Io Io:"C:\cygwin\home\larsberg\smlnj2\sml.boot.x86-win32\smlnj\basis.cm\x86-win32\basis.cm",bin 32-bin-prim-io:checkHndl: openRd: failed at: Basis/Implementation/IO/bin-io-fn.sml:617.25-617.71 ./cm/util/Safeio.sml:30.11 ../compiler/TopLevel/interact/evalloop.sml:44.55
基库中的其他函数也会产生相同的错误,例如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发布于 2017-02-06 18:28:55
当移动已安装的目录或未设置SMLNJ主环境时,就会发生这种情况。基本上,sml无法找到basis.cm文件,该文件应该存在于$SMLNJ_HOME子目录中。因此,通过在中设置安装路径,$SMLNJ_HOME为我解决了这个问题。
$SMLNJ_HOME=~/ws/CSCI-5161/sml发布于 2017-09-15 18:34:15
我在Windows 7上,但也有同样的错误。将程序放在程序文件(X86)/SMLNJ中。我把SMLNJ文件夹移到Program /,现在不再收到错误了。
https://stackoverflow.com/questions/34804406
复制相似问题