我正在学习OCaml,我很好奇OCaml如何进行类型推理。我知道这是通过一个称为统一的过程来完成的,我试着在已发表的论文中阅读有关该算法的内容,但是这个符号让我失望了。谁能为我描述一步一步的过程?
我正在学习OCaml,我很好奇OCaml如何进行类型推理。我知道这是通过一个称为统一的过程来完成的,我试着在已发表的论文中阅读有关该算法的内容,但是这个符号让我失望了。谁能为我描述一步一步的过程?
实际上,可以认为统一是算法的实现细节。类型系统只是一组规则。规则允许检查现有的类型派生。规则没有明确地提及统一,尽管统一是一种在考虑实现自动从表达式生成类型派生的算法时自然会想到的技术。
我非常喜欢阅读“使用Caml Light进行功能编程” Michel Mauny的教程 当我和你有同样的问题。教程现在显示它的年龄,但是您感兴趣的章节(第15章)现在仍然像现在一样好。
在ML中学习HM类型推理的规范参考可能是Ben Pierce的“类型和编程语言”。您可以在该书的第22章中找到该主题。
类型推断算法的第一个实例称为 算法W.。
但是,您可能会惊讶地发现 - 事实上 - OCaml 履行 不是简单地生成约束并解决它们!实际上,它为类型推断做了一个更有效的基于图的算法,其中(虽然快速)导致偶尔报告奇怪的类型错误。您可以查看有关解释ML中类型错误的参考。