2010-01-06 42 views
1

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

是否需要类名?

EDIT

类型-污点是通过在整个程序中包括的功能之间的分配跟踪。

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

和类型MyTypeName1MyTypeName2分别推断myVariable1myVariable2

在首发语言OK,你喜欢的东西有类的名称,如MyTypeName1。不过,如果我们想提高语言支持:

MyVariable3 = myVariable1 
MyVariable3 = myVariable2 

可以通过代码进行跟踪(myVariable3现在可以包含两种类型的大概是在一个层次)。

编辑

MyTypeName1和MyTypeName2的成员是由像陈述推断:

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

如果name成员MyTypeName1MyTypeName2不会是什么在一个共同的基类?如果我们想要MyTypeName1MyTypeName2中的其他名称属性,并且基类中没有任何属性,该怎么办?有没有一种方法可以告诉编译器该做什么/如何处理? (类型推断的想法是减少打字不增加它...?)

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

+3

作业问题? – 2010-01-06 02:12:06

+2

吉姆:如果是这样,我很高兴这不是我的家庭作业,因为我真的很难找出他在说什么:) – 2010-01-06 02:13:13

+1

这是一个很高兴你残留给你先生们。 :) – martinr 2010-01-06 02:19:03

回答

1

该字段已加载不可判定性结果,但我已将其全部遗忘。如果你愿意将继承与子类型混淆,那么你就没有问题。如果你想要的东西更加雄心勃勃的(这听起来就好像你这样做),我会看看

  • 本杰明·皮尔斯的教科书Types and Programming Languages,这将覆盖广度和深度亚型以及他们如何做基本结果或者在类型推断中玩得不好。 (我会看看自己,但我的副本在工作。)

  • Franç ois Pottier的博士论文。

另一个需要注意的名字是Joe Wells,他在类型系统和编程语言中负责了很多不可判定的结果。

什么是最低解决类型歧义所需的额外提示?

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