得到类型推断,想要添加类继承

时间:2010-01-06 02:10:22

标签: programming-languages language-design

如果我设计一个带有类型推断的新语言,没有显式类型和没有类继承支持,然后想要添加继承,那么解析类型歧义时编译器所需的最小额外提示是什么?添加功能?

是否需要课程名称?

修改

通过整个程序中的分配(包括功能之间)来跟踪类型污染。

确定使用起始语言,您可以使用MyTypeName1这样的类名,例如:

myVariable1 = New(MyTypeName1)
myVariable2 = New(MyTypeName2)

分别为MyTypeName1MyTypeName2推断类型myVariable1myVariable2。但是如果我们想要增强语言来支持:

MyVariable3 = myVariable1
MyVariable3 = myVariable2

可以通过代码跟踪(myVariable3现在可以包含两种类型,可能在层次结构中)。

修改

MyTypeName1和MyTypeName2的成员是从以下语句中推断出来的:

myVariable1.name="Fred"
myVariable2.name="JX3009"

如果nameMyTypeName1中的MyTypeName2成员不属于公共基类,该怎么办?如果我们想在MyTypeName1MyTypeName2中使用不同的名称属性而在基类中没有,那该怎么办?是否有一种优雅的方式告诉编译器要做什么/如何处理? (类型推断的想法是减少打字而不是增加它......?)

或者我们是否需要明确指定层次结构?

1 个答案:

答案 0 :(得分:1)

这个字段加载了不可判定的结果,但我已经忘记了它们。如果你愿意将继承与子类型混淆,那么你没有问题。如果你想要一些更雄心勃勃的东西(听起来就像你那样),我会看看

  • Benjamin Pierce的教科书Types and Programming Languages,它将涵盖宽度和深度子类型的基本结果,以及它们如何与类型推断完美匹配。 (我看看自己,但我的副本正在工作。)

  • FrançoisPottier的博士论文。

要检查的另一个名字是Joe Wells,他负责类型系统和编程语言中的大量不可判定性结果。

  

解决类型歧义所需的编译器的最小额外提示是什么?

如果对这个问题有独特的答案,我会非常惊讶。我认为这更可能是这些语言设计问题之一,其中有一堆解决方案,只要极简和注释都是严格无法比拟的。