10得票6回答
为什么Maybe/Optional类型使用Just/Some类型而不是实际类型?

在Idris中,Maybe类型的定义如下: data Maybe a = Just a | Nothing 在Haskell中定义类似: data Maybe a = Just a | Nothing deriving (Eq, Ord) 这里是机器学习版本: d...

8得票1回答
Ocaml中的重载

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

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

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

11得票2回答
我能否在OCaml toplevel上构建图形界面?

关于交互式toplevel和图形UI编程的几个问题: 是否可以从ocaml toplevel动态构建图形界面? 也可以使用Graphics库吗?

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

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

19得票7回答
你会推荐哪个英文教程来学习OCaml?

我想向初学者推广OCaml,并且正在寻找好的英文教程;不仅是你听说过的,而是你实际尝试过并发现有用的...

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

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

14得票1回答
函数式编程语言中的Church-Rosser定理示例

我在学习函数式编程时,看到了多个关于Church Rosser定理的参考资料,特别是钻石属性图,但我没有找到一个很好的代码示例。 如果像Haskell这样的语言可以被视为一种λ演算,那么使用该语言本身可以想出一些例子。 如果示例能够清晰地展示步骤或规约如何导致易于并行执行,我会给予额外加分。

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

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

13得票7回答
从语言实现的角度来看,函数式语言与其他语言有何不同?

现在有全新的“函数式编程”范例,与过程式编程相比需要完全改变思维模式,它使用高阶函数、纯度、单子等特性,在命令式和面向对象语言中通常看不到。 我的问题是这些语言的实现与命令式或面向对象语言有何不同,例如内存管理或指针等内部细节。 有一些函数式语言是运行在JVM之上的。这是否意味着这些语言在...