29得票6回答
适用于Windows、Linux或Mac的ML IDE和编译器

我需要在机器学习中写一些代码,这是我第一次使用该语言。 是否有适用于标准ML的开发环境(最好是在Windows下)?我尝试过谷歌搜索(和StackOverFlow!),但是我只找到了用于Linux的普通编译器(最多带有交互式控制台),没有IDE或Eclipse/NetBeans插件。 有什么建议吗?

9得票1回答
使用Hindley Milner和约束条件推断递归表达式

我正在尝试推断以下表达式的类型: let rec fix f = f (fix f) 需要将其类型定义为 (a -> a) -> a 在使用底部向上算法(在“泛化 Hindley-Milner 类型推断算法”中描述)时,添加以下规则: a1, c1 ...

43得票3回答
Standard ML模块系统和OCaml模块系统有何不同(如果有)?

我的问题是标准ML的模块系统和OCaml模块系统之间是否有任何区别? OCaml是否具有SML拥有的所有functors、ascriptions等支持?

8得票1回答
Ocaml中的重载

我知道OCaml不支持重载。那么,除了重载,我们可以采取什么方法来解决这个问题呢? 1)使用多态代替? 2)为不同的函数赋予不同的名称? 3)将同名函数放在不同的模块中? 哪一个会起作用?

31得票1回答
多态类型中的包容性

在‘Practical type inference for arbitrary-rank types’一文中,作者谈到了包容性(subsumption): 我在阅读时尝试在GHCi中测试事物,但即使g k2应该可以通过类型检查,在我使用GHC 7.8.3时却不能: λ> :se...

25得票2回答
推断类型似乎检测到了一个无限循环,但实际发生了什么?

在安德鲁·科尼格的关于ML类型推断的轶事中,作者使用归并排序的实现作为ML的学习练习,并且发现了一个“不正确”的类型推断,这让他非常高兴。 Much to my surprise, the compiler reported a type of 'a list -> int list...

28得票1回答
SML中类型定义的增长:使用Hindley Milner类型推断

曾经有人向我展示了SML中的一个小技巧,他们在REPL中编写了大约3或4个函数,最后一个值的结果类型非常长(需要很多页才能滚动完)。 是否有人知道生成这种长类型的代码,或者是否有一个名称来描述这种行为?

9得票4回答
如何在 SML 的 IF 语句中使用 AND 运算符

我是 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...

27得票4回答
避免多次列表遍历的好处

我在函数式语言中看到过很多处理列表并构建一个函数来处理其元素的示例,以便在接收到某些额外值(通常不在生成函数时出现)后执行某些操作,例如: 计算每个元素与平均值之间的差异 (“惰性求值”下的最后两个示例) 在严格的函数式语言中(如ML / OCaml)分阶段进行列表附加,以避免多次遍历第...

61得票3回答
将ML风格的模块添加到Haskell中存在哪些主要理论困难?

众所周知,Haskell风格的类型类和ML风格的模块提供了不同的接口规范机制。它们在功能上(可能)是等价的,但在实践中,每种机制都有其自身的优缺点。 既然我对语言特性有点包容,那么我的问题是:添加ML风格模块到Haskell中的主要理论困难是什么?我对以下类型的答案感兴趣: - 哪些现有的...