类型推断的限制是什么?

时间:2009-08-09 12:01:17

标签: type-inference sml type-systems hindley-milner

类型推断的限制是什么?哪种类型的系统没有通用的推理算法?

2 个答案:

答案 0 :(得分:11)

Joe Wells表明类型推断对于系统F来说是不可判定的,这是Girard和Reynolds独立发现的最基本的多态lambda演算。这是显示类型推断极限的最重要结果。

这是一个仍然存在的重要问题:将广义代数数据类型集成到Hindley-Milner类推理中的最佳方法是什么? Simon Peyton Jones每年都会提出一个新的答案,据说比前一年的答案更好。我还没看过2009年3月的版本,所以不能说我相信它是否具有决定权。

答案 1 :(得分:5)

依赖于值的类型系统(或简称依赖类型系统)可以描述类似以下内容的类型:“在评估时(运行时),此变量的值将始终等于该变量的值,用不同的评估过程计算“。从代码中自动推导出这种类型需要自动定理证明。如果您可以表达的定理集仅限于那些可自动证明的定理,那么这不是问题,但对于依赖类型的语言,通常不是这种情况。

因此,依赖类型的系统不能进行一般(和完整)类型推断。

我相信有人可以提供道德正式和完整的答案......