为了账号安全,请及时绑定邮箱和手机立即绑定

OCaml、Scala 和 Go 的结构类型实现

OCaml、Scala 和 Go 的结构类型实现

Go
凤凰求蛊 2021-06-03 18:46:07
在研究结构类型时,我发现以下帖子描述了 Go 中的接口如何在运行时转换为方法查找表。帖子中描述的过程似乎与为 Scala 的可选结构类型系统和 Java 语言的 White Oak 扩展描述的反射和生成技术大不相同。是否有任何深入的资源讨论如何在 OCaml 中实现结构类型?我对与标称类型系统进行优化或运行时性能比较的任何讨论特别感兴趣。
查看完整描述

1 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

您可以在Jake Donham 的这篇博文中找到对 OCaml 对象内部结构的相当详细的描述。它的要点是对象支持主要作为一个内部库实现,在编译器本身中只有一点逻辑(当然还有类型系统中的对象类型逻辑),主要是围绕高效的消息分发。

我不是这部分语言的专家,但经过粗略的检查,看起来 OCaml 依赖于排序方法类型(解析为方法表中的插槽)中的方法查找,并缓存了名为 last 的方法,和优化静态已知调用,特别是方法实现中的自调用。最后,一些常用的函数(例如实例变量 getter 和 setter)被识别和编码(内部 OO 库中的类型impl),以提高性能,更重要的是,减少代码大小。


查看完整回答
反对 回复 2021-06-07
  • 1 回答
  • 0 关注
  • 209 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信