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),以提高性能,可能更重要的是减少代码大小.

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...