微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

OCaml,Scala和Go的结构打字实现

在研究结构类型时,我发现以下描述为 how interfaces in Go are translated to method lookup tables at runtime的帖子.该帖子中描述的过程似乎与Scala的可选结构类型系统以及Java语言的White Oak扩展所描述的 reflective and generative techniques截然不同.

有没有深入的资源讨论如何在OCaml中实现结构打字?我对与名义类型系统的优化或运行时性能比较的任何讨论特别感兴趣.

解决方法

Jake Donham可以在 this blog post中找到一个比较详细的OCaml对象内部描述.其要点是,对象支持大部分实现为 an internal library,编译器本身只有一点逻辑(当然,类型系统中的对象键入逻辑),主要是围绕高效的消息分派.

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐