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

8得票1回答
N元组与二元组的区别

在 Ocaml 中,具有不同元数的元组具有不同的类型和值构造函数: # let a = (1, 2, 3);; val a : int * int * int = (1, 2, 3) # let b = (1, (2, 3));; val b : int * (int * int) = (1...

8得票2回答
ML家族的编译器是否会对尾调用进行任何复杂的优化?

我认为以下函数定义是尾递归的: fun is_sorted [] = true | is_sorted [x] = true | is_sorted (x::(y::xs)) = if x > y then false else is_sor...

8得票2回答
Python和机器学习中的词法作用域

我在一个大困境中,下面是一段ML代码: val x = 1 fun f(y) = x + y val x = 2 val y = 3 val z = f (x + y) z的值是6。现在,如果我用Python编写相同的代码,z的值将是7。而这两种语言都声称(实际上是教授这些语言的人声称)...

8得票1回答
如何理解《纯函数数据结构》中描述的分段二项堆

在论文Purely Functional Data Structures的第6.3.1章中,写道: 然后,每当我们从一个新元素和秩为0到r-1的树段创建一个新树时,我们只需将新元素与段中的第一个根(即秩为0的树的根)进行比较。更小的元素成为新的根,而更大的元素则成为根的秩为0的子节点。 ...

8得票3回答
学习/使用机器学习。我应该使用哪个系统?

我想学习并使用机器学习,但是有很多编译器可供选择。我需要: 速度快 内存占用低 支持线程 可变数组和记录类型 延续 适合生产代码 易于外部函数接口(FFI) 保持最新 ... 有用的库 在一定程度上可移植 我不需要: 对象 图形用户界面 支持Windows 例如,我找到了OCa...

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

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

8得票1回答
Ocaml中的重载

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

8得票1回答
“提示/控制”与“移位/重置”的区别示例

我不确定我理解被限定的续延操作符对 prompt/control 和 reset/shift 之间的区别。我理解了一些基本的使用例子,但在这些例子中,它们的行为相同。 我在 Dariusz Biernacki 和 Olivier Danvy 的 "On the Dynamic Extent ...

7得票2回答
ML编程中的竖线(|)是什么意思?

例如下面的函数: fun fac (0 : int) : int = 1 | fac (n : int) : int = n * fac (n - 1) 或者在函数中: fun even 0 = true | even x = odd(x-1) and odd 0 = fals...