8得票3回答
如何在PolyML解释器中添加readline支持?

我发现polyml是ML的实现,可以在Ubuntu上很容易地安装(在存储库中命名为polyml并且可以使用poly执行)。我正在遵循Andrew Cumming的A Gentle Introduction to ML。在与polyml解释器进行几分钟的实验后,我发现它不支持readline (...

11得票2回答
OCaml - 元组中列表引用的模式匹配

有没有更简洁的方法来处理这个问题?我正在尝试对以下模式进行匹配: (a' option * (char * nodeType) list ref 我所找到的唯一方法就是这样做: match a with | _, l -> match !l with | (c, n)::t -...

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

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

16得票6回答
编译器能否进行数学推导或证明?

我开始学习函数式编程语言,例如 Haskell、ML,大部分练习都会展示以下内容: foldr (+) 0 [ 1 ..10] 相当于 sum = 0 for( i in [1..10] ) sum += i 这让我想到,为什么编译器不能知...

8得票3回答
理解类型错误:"期望的签名为Int*Int->Int,但得到的是Int*Int->Int"

Steve Yegge的文章关于服务器端JavaScript的评论开始讨论语言中类型系统的优点,这个评论描述了: ... examples from H-M style systems where you can get things like: expected signature I...

16得票3回答
SML中的`o`运算符只适用于单参数函数吗?

o组合操作符(如val x = foo o bar,其中foo和bar都是函数),只能用于单参数函数和/或参数数量相等的函数吗? 如果不是,那么如何将foo(x,y)与bar(x)组合起来的语法是什么。

15得票4回答
在使用“let”语句链式编程时,是更好使用“and”还是“in”?

我意识到这可能是一个愚蠢的问题,但是... 如果我要链接一堆不需要知道彼此值的let语句,使用and还是in更好? 例如,以下哪个更可取(如果有的话):let a = "foo" and b = "bar" and c = "baz" in (* etc. *) 或者let a = "...

9得票4回答
OCaml中的模式匹配函数

大家能帮我解释一下这段代码吗? let safe_division n = function | 0 -> failwith "divide by 0" | m -> n / m 当我执行 safeDiv 3 0 时,这种情况下的 m 和 n 是什么? 通常情况下,函数何时...

8得票1回答
Ocaml中的重载

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

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

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