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