在Idris中,Maybe类型的定义如下: data Maybe a = Just a | Nothing 在Haskell中定义类似: data Maybe a = Just a | Nothing deriving (Eq, Ord) 这里是机器学习版本: d...
我知道OCaml不支持重载。那么,除了重载,我们可以采取什么方法来解决这个问题呢? 1)使用多态代替? 2)为不同的函数赋予不同的名称? 3)将同名函数放在不同的模块中? 哪一个会起作用?
我认为以下函数定义是尾递归的: fun is_sorted [] = true | is_sorted [x] = true | is_sorted (x::(y::xs)) = if x > y then false else is_sor...
关于交互式toplevel和图形UI编程的几个问题: 是否可以从ocaml toplevel动态构建图形界面? 也可以使用Graphics库吗?
我不确定我理解被限定的续延操作符对 prompt/control 和 reset/shift 之间的区别。我理解了一些基本的使用例子,但在这些例子中,它们的行为相同。 我在 Dariusz Biernacki 和 Olivier Danvy 的 "On the Dynamic Extent ...
我想向初学者推广OCaml,并且正在寻找好的英文教程;不仅是你听说过的,而是你实际尝试过并发现有用的...
o组合操作符(如val x = foo o bar,其中foo和bar都是函数),只能用于单参数函数和/或参数数量相等的函数吗? 如果不是,那么如何将foo(x,y)与bar(x)组合起来的语法是什么。
我在学习函数式编程时,看到了多个关于Church Rosser定理的参考资料,特别是钻石属性图,但我没有找到一个很好的代码示例。 如果像Haskell这样的语言可以被视为一种λ演算,那么使用该语言本身可以想出一些例子。 如果示例能够清晰地展示步骤或规约如何导致易于并行执行,我会给予额外加分。
我正在尝试推断以下表达式的类型: let rec fix f = f (fix f) 需要将其类型定义为 (a -> a) -> a 在使用底部向上算法(在“泛化 Hindley-Milner 类型推断算法”中描述)时,添加以下规则: a1, c1 ...
现在有全新的“函数式编程”范例,与过程式编程相比需要完全改变思维模式,它使用高阶函数、纯度、单子等特性,在命令式和面向对象语言中通常看不到。 我的问题是这些语言的实现与命令式或面向对象语言有何不同,例如内存管理或指针等内部细节。 有一些函数式语言是运行在JVM之上的。这是否意味着这些语言在...