SML/NJ Basis库在Windows 10中不工作
我正在Windows 10上使用最新版本的SMLNJ(110.79) 我似乎无法使用任何SML Basis库函数 下面是我用SML/NJ Basis库在Windows 10中不工作,sml,smlnj,Sml,Smlnj,我正在Windows 10上使用最新版本的SMLNJ(110.79) 我似乎无法使用任何SML Basis库函数 下面是我用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\basi
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]
提出时间:Basis/Implementation/IO/bin IO fn.sml:617.25-617.71
../cm/util/safeio.sml:30.11
../compiler/TopLevel/interact/evalloop.sml:44.55
Basis库中的其他函数也会产生相同的错误,例如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
我使用的是Windows7,但出现了相同的错误。windows安装程序将程序放入程序文件(x86)/SMLNJ中。我已将SMLNJ文件夹移动到Program Files/中,现在不再出现错误。您的问题应该是SML/NJ在Windows上无法正常工作。正如你自己所说,这与List.filter没有什么特别的关系。你是对的,我重新编写了这个问题。也许你可以尝试直接使用Windows installer,而不是通过Cygwin(如果这不会给你的代码库带来太多困难的话)。这可能更多的是Cygwin与Windows 10之间的问题,而不是SML/NJ与Windows 10之间的问题。我很确定我就是这么做的。我刚刚从这里直接得到了.msi
,我的评论是基于在您给出的错误消息中看到Cygwin。我在110.79上使用了windows安装程序(在windows 7上,而不是在10上),没有问题——但是Cygwin目录上没有安装任何东西(我的机器上甚至没有Cygwin)。我想知道如果安装程序检测到Cygwin,它是否会做一些不同的事情。如果您选择了该目录,可以卸载,然后使用安装程序建议的默认目录重新安装。如果情况更糟,您可以尝试按照以下说明从源代码进行编译: