runST是Haskell函数,通过类型静态约束可用资源的寿命。为此,它使用了rank-2多态性。标准ML更简单的类型系统只提供rank-1多态性。 标准ML是否仍然可以使用类型来约束资源的寿命,从而实现类似的结果? 这个页面和这个页面演示了一些重构代码的方法,只需要更简单的类型就可以。如...
我刚开始接触OCaml,并尝试实现一个函数,该函数返回给定列表 x 中在列表 y 的索引处的元素列表。 例如,该函数应执行以下计算:[5,6,7,8],[0,3] => [5,8] 我不确定如何在ML中存储临时变量,也不清楚它是如何工作的。尽管如此,我知道如何通过指定的索引从列表中查...
fun curry f x y = f (x, y); fun uncurry f (x, y) = f x y; fun compose (f, g) x = f (g x); 我理解compose函数,但不太理解ML中的curry和uncurry。有人能解释一下吗? 此外,以下两...
我对OCaml中的弱多态性有些困惑。 请看下面的代码片段,其中我定义了一个函数remember: let remember x = let cache = ref None in match !cache with | Some y -> y ...