【发布时间】:2013-03-25 16:52:27
【问题描述】:
Rust 具有线性类型系统。有什么(好的)方法可以在 OCaml 中模拟这个吗?例如,当使用 ocaml-lua 时,我想确保仅当 Lua 处于特定状态(堆栈顶部的表等)时才调用某些函数。
编辑:这是最近一篇关于与该问题相关的资源多态性的论文:https://arxiv.org/abs/1803.02796
编辑 2:还有许多关于 OCaml 中会话类型的文章,包括提供一些语法糖的语法扩展。
【问题讨论】:
-
您可以使用 monads 在 monadic 绑定中隐藏“线性”类型处理,并且仅将 monadic 类型导出为抽象。
-
模拟是什么意思?运行时检查?
-
不,静态的。 “模拟”是指使用现有类型系统来实现(接近)线性类型系统。
-
这里有一些关于依赖类型的有趣研究:okmij.org/ftp/Computation/lightweight-dependent-typing.html
标签: ocaml linear-types