Fundeps和GADT:什么时候类型检查可判定?

时间:2008-09-07 23:46:51

标签: haskell type-inference type-systems gadt

我正在阅读一篇关于Haskell的研究论文以及如何实现HList,并想知道所描述的技术何时对于类型检查器是否可判定。另外,因为你可以用GADT做类似的事情,我想知道GADT类型检查是否总是可判定的。

如果你拥有它们我更喜欢引用,所以我可以阅读/理解解释。

谢谢!

2 个答案:

答案 0 :(得分:8)

我相信GADT类型检查总是可判定的;这是不可判断的推论,因为它需要更高阶的统一。但是,GADT类型检查器是您在例如中看到的证明检查器的限制形式。 Coq,构造函数构建证明术语。例如,将lambda演算嵌入到GADT中的经典示例为每个缩减规则都有一个构造函数,所以如果你想找到一个术语的正常形式,你必须告诉它哪些构造函数会得到你它。暂停问题已移至用户手中: - )

答案 1 :(得分:1)

您可能已经看过这个,但微软研究中有一系列关于此问题的论文:Type Checking papers。第一个描述了格拉斯哥Haskell编译器中实际使用的可判定算法。