OCaml类型推理算法如何工作?

Kir*_*ira 11 ocaml types functional-programming

我正在学习OCaml,我很好奇OCaml如何进行类型推理.我知道这是通过一个叫做统一的过程来完成的,我试着在已发表的论文中阅读有关算法的内容,但这个符号让我失望了.任何人都可以为我描述一步一步的过程吗?

Pas*_*uoq 10

实际上,可以认为统一是算法的实现细节.类型系统只是一组规则.规则允许检查现有的类型派生.规则没有明确地提及统一,尽管统一是一种技术,当考虑实现自动从表达式生成类型派生的算法时,自然会想到这种技术.

当我和你有同样的问题时,我非常喜欢阅读Michel Mauny的 "使用Caml Light进行功能编程" 教程.教程现在显示它的年龄,但你感兴趣的章节(第15章)现在仍然像现在一样好.


Kri*_*ski 6

在ML中学习HM类型推理的规范参考可能是Ben Pierce的"类型和编程语言".您可以在该书的第22章中找到该主题.

类型推理算法的第一个实例被称为算法w ^.

但是,您可能会惊讶地发现 - 实际上 - OCaml的实现并不是简单地生成约束并解决它们!实际上,它为类型推断提供了一种更有效的基于图形的算法,该算法(虽然快速)导致偶尔会报告奇怪的类型错误.您可以查看有关解释ML中类型错误的参考资料.