请准确描述Hack语言的类型系统。它似乎在网上不存在——我能找到的只是散布在整个文档中的例子——所以请在你的答案中详细描述它。
例如,我想知道 Hack 中如何定义子类型,以及在各种 Hack 类型检查/静态分析模式(严格、部分、decl)中使用了哪些赋值兼容性概念。
如果您要为 Hack 提供正式的语言规范,目前还没有,尽管我们认为最终有它会很好。如果您要询问有关该语言的推理规则和形式证明,那么我们将更多的精力放在制作实用的语言上,而不是坐下来实际花时间证明它是正确的。:) (也就是说,100% 严格的代码应该是合理的,即没有运行时类型错误,如果不是,那是一个错误;我们永远不会坐下来正式证明这一点。)
因此,除非您想开始深入研究类型检查器源,否则您链接到的文档是最好的。为此,您可能会对我们的统一代码、子类型关系和一般类型检查的具体细节感兴趣。(还有很多很多,但是如果您是那种想深入了解我们如何实施统一的细节的人,我相信您可以自己找到其余的 :))
如果您对实施有具体问题,请随时在 SO 上使用“hacklang”标签向他们提问,如果他们是主题的话,一般来说,我很高兴在美国太平洋时间的工作时间内在 Freenode 上的#hhvm 聊天.