Standard ML中的Functor与模块系统相关,可以基于其他结构生成结构。下面是一个生成不同类型列表组合器的functor示例,但该示例存在问题: 各种类型的列表都有其优点--例如,惰性列表可以是无限长的,而连接列表具有O(1)的连接操作符。但当所有这些列表类型都符合相同的签名时,f...
我认为以下函数定义是尾递归的: fun is_sorted [] = true | is_sorted [x] = true | is_sorted (x::(y::xs)) = if x > y then false else is_sor...
我想向初学者推广OCaml,并且正在寻找好的英文教程;不仅是你听说过的,而是你实际尝试过并发现有用的...
我是 SML 的新手。 在 IF 语句中如何使用 AND 运算符? 这是我的代码: val y = 1; val x = 2; if (x = 1 AND y = 2) then print ("YES ") else print("NO "); 我的错误是: stdIn:66.9-67...
根据Harper的说法(https://existentialtype.wordpress.com/2011/04/16/modules-matter-most/),似乎类型类并没有提供与模块同等级别的抽象,但我很难确切地弄清楚为什么。该链接中也没有示例,因此很难看出关键区别。还有其他论文介绍...
o组合操作符(如val x = foo o bar,其中foo和bar都是函数),只能用于单参数函数和/或参数数量相等的函数吗? 如果不是,那么如何将foo(x,y)与bar(x)组合起来的语法是什么。
我的问题是标准ML的模块系统和OCaml模块系统之间是否有任何区别? OCaml是否具有SML拥有的所有functors、ascriptions等支持?
我正在尝试使用SML/NJ,使用sml < source.sml运行代码,但它会输出太多信息。 例如,这是source.sml的内容:fun fac 0 = 1 | fac n = n * fac (n - 1) val r = fac 10 ; print(Int.toStrin...
我知道OCaml不支持重载。那么,除了重载,我们可以采取什么方法来解决这个问题呢? 1)使用多态代替? 2)为不同的函数赋予不同的名称? 3)将同名函数放在不同的模块中? 哪一个会起作用?
曾经有人向我展示了SML中的一个小技巧,他们在REPL中编写了大约3或4个函数,最后一个值的结果类型非常长(需要很多页才能滚动完)。 是否有人知道生成这种长类型的代码,或者是否有一个名称来描述这种行为?