OCaml 在
教学与研究
凭借其深厚的数学根基,OCaml 一直与学术界有着密切的联系。它在世界各地的大学中被教授,并且积累了不断增长的研究成果。
还有更多学术机构教授 OCaml!
研究论文
了解 OCaml 编程语言和编译器的理论基础
将效果处理程序改造到 OCaml 上
效果处理程序作为一种用于用户定义效果的模块化编程机制,正在获得越来越多的关注。效果处理程序允许以可组合的方式表达非局部控制流机制,例如生成器、async/await、轻量级线程和协程。我们提出了一种设计并评估了用于 OCaml(一种工业级多范式编程语言)的成熟高效的效果处理程序实现。我们的实现努力保持现有 OCaml 代码的向后兼容性和性能配置。将效果处理程序改造到 OCaml 上具有挑战性,因为 OCaml 目前没有除了异常之外的任何非局部控制流机制。我们在 OCaml 中的效果处理程序实现:(i)对一个不使用效果处理程序的综合宏基准套件施加了平均 1% 的开销;(ii)与检查堆栈的程序分析工具保持兼容;(iii)对使用效果处理程序的新代码来说效率很高。
K. C. Sivaramakrishnan,Stephen Dolan,Leo White,Tom Kelly,Sadiq Jaffer,Anil Madhavapeddy
扩展 OCaml 的 `open`
我们建议对 OCaml 的 `open` 结构进行和谐扩展。OCaml 现有的结构 `open M` 将模块 `M` 导出的名称导入当前范围。目前,`M` 必须是模块的路径。我们建议扩展 `open` 以改为接受任意模块表达式,从而能够简洁地解决在编写 OCaml 程序时出现的许多现有范围相关问题。
Runhang Li,Jeremy Yallop
在空间和时间上限制数据竞争
我们提出了一种用于共享内存并行程序的新语义,即使在存在数据竞争的情况下也能提供强大的保证。我们的局部数据竞争自由属性保证所有无数据竞争的程序部分都表现出顺序语义。我们提供了一个简单的操作语义和一个等效的公理模型,并评估了用于 OCaml 编程语言的实现。我们的评估表明,在主流编程语言中,可以在可理解的内存模型与合理的(x86 上无开销,ARM 上约 0.6%)顺序性能权衡之间取得平衡。
Stephen Dolan,KC Sivaramakrishnan,Anil Madhavapeddy
行业
好奇 OCaml 在行业中如何使用?
访问我们的成功案例,了解企业如何使用 OCaml。