9得票1回答
'如何正确使用高阶functor?' 或 '如何通过funsigs玩得更尽兴?'

动机 我想不出如何在SML/NJ中使用高阶functor来实现实际目的。 根据SML/NJ特殊功能的文档,可以通过使用funsig关键字将一个functor指定为另一个functor的参数。因此,给定一个签名 signature SIG = sig ... end 我们应该能够指定一...

9得票2回答
SML中的选项SOME和NONE是什么?

我是SML的新手(实际上也是编程的新手)。 fun readlist (infile : string) = let val ins = TextIO.openIn infile fun loop ins = case TextIO...

9得票8回答
如何在Mac上安装可运行的Standard ML版本?

我正在使用Mac OSX 10.7.5,但似乎无法下载带有REPL的可用的Standard ML编译器。这是应该很困难吗?有最好的ML我应该下载吗?我已经尝试过SML / NJ和MLton但都没有成功。

8得票3回答
一个案例中的多个模式

在SML中,您是否可以在一个case语句中使用多个模式? 例如,我有4个算术运算符以字符串形式表示,"+", "-", "*", "/",如果它是"+"或"-",我想打印"PLUS MINUS",如果它是"*"或"/",则打印"MULT DIV"。 简而言之:是否有地方可以简化以下内容以使...

8得票4回答
在SML中从列表中移除重复项

我刚开始学习SML中的函数式编程,我想知道如何将以下两个函数合并为一个函数。函数isolate使用辅助函数'removes'来删除任意类型('a)列表的重复项。 fun isolate [] = [] | isolate (l as x::xs) = x::isolate(remove(...

8得票1回答
将命令行参数传递给SML脚本

我该如何将命令行参数传递给SML脚本?我知道有一个正确类型的unit -> string list函数CommandLine.arguments(),但是我该如何调用解释器来实现: $ sml script_name.sml an_argument another_one 没有给我...

8得票1回答
从多个文件编译SML项目

我有一个包含许多文件的项目,希望它能与大多数流行的编译器一起使用。 不幸的是,PolyML和SML/NJ需要use命令,而MosML则需要使用load来明确加载基础库结构,这被poly或sml所不认可。 此外,MLton和MLKit需要完全不同的.mlb文件,只列出文件名,并且需要明确导入...

7得票2回答
将其参数应用于自身的函数?

考虑以下 SML 函数: fn x => x x 这会产生以下错误(New Jersey标准ML v110.72): stdIn:1.9-1.12 Error: operator is not a function [circularity] operator: 'Z i...

7得票1回答
SML/NJ的惰性求值是否正常工作?

我正在使用 SML/NJ v110.80 和 Lazy。我在 REPL 中尝试了以下代码。 Control.lazysml := true; open Lazy; fun f x = f x; let val x = $(f(4)) in 15 end; 最后的表达式应该是15,但它发...

7得票1回答
如何在SML中从另一个文件相对于导入者的路径导入?

我正在使用SML/NJ,需要在另一个文件f2.sml中使用一个名为f1.sml的函数集。 然而,我没有直接运行f2.sml文件,而是从其他地方导入它。 如果我在f2.sml中使用use命令,并提供相对于f2.sml路径的f1.sml路径,那么当我导入f2.sml时,它将从脚本的角度查找提供...