Programming languages 已获取类型推断,是否要添加类继承
如果我设计了一种具有类型推断、没有显式类型和类继承支持的新语言,然后想要添加继承,那么在添加功能时,编译器需要多少额外提示来解决类型歧义 需要类名吗 编辑 在整个程序中,包括函数之间,通过赋值跟踪类型污染 好的,在起始语言中,您可以从以下内容中获得类名称,如Programming languages 已获取类型推断,是否要添加类继承,programming-languages,language-design,Programming Languages,Language Design,如果我设计了一种具有类型推断、没有显式类型和类继承支持的新语言,然后想要添加继承,那么在添加功能时,编译器需要多少额外提示来解决类型歧义 需要类名吗 编辑 在整个程序中,包括函数之间,通过赋值跟踪类型污染 好的,在起始语言中,您可以从以下内容中获得类名称,如MyTypeName1: myVariable1 = New(MyTypeName1) myVariable2 = New(MyTypeName2) 分别为myVariable1和myVariable2推断类型MyTypeName1和myV
MyTypeName1
:
myVariable1 = New(MyTypeName1)
myVariable2 = New(MyTypeName2)
分别为myVariable1
和myVariable2
推断类型MyTypeName1
和myVariable2
。但是,如果我们想加强语言支持:
MyVariable3 = myVariable1
MyVariable3 = myVariable2
可以通过代码进行跟踪(myVariable3现在可以包含两种类型,它们可能位于层次结构中)
编辑
MyTypeName1和MyTypeName2的成员由以下语句推断:
myVariable1.name="Fred"
myVariable2.name="JX3009"
如果MyTypeName1
和MyTypeName2
中的name
成员不在公共基类中,该怎么办?如果我们希望在MyTypeName1
和MyTypeName2
中有不同的name属性,而在基类中没有该属性,该怎么办?有没有一种优雅的方式告诉编译器该做什么/如何处理?(类型推断的想法是减少类型而不是增加类型…?)
或者我们需要显式地指定层次结构吗?这个字段加载了不可判定的结果,但我已经忘记了它们。如果您愿意将继承与子类型混为一谈,那么您就没有问题了。如果你想要更雄心勃勃的东西(听起来好像你想要),我会看看
- 本杰明·皮尔斯(Benjamin Pierce)的教科书将涵盖宽度和深度子类型的基本结果,以及它们如何很好地处理类型推断。(我想自己看看,但我的副本还在工作。)
- 弗朗索瓦·波蒂埃博士论文
如果这个问题有一个独特的答案,我会非常惊讶。我认为这很可能是一个语言设计问题,其中有一系列的解决方案,就最小值和注释而言,这些解决方案是完全不可比的。这个字段加载了不可判定的结果,但我已经忘记了所有这些结果。如果您愿意将继承与子类型混为一谈,那么您就没有问题了。如果你想要更雄心勃勃的东西(听起来好像你想要),我会看看
- 本杰明·皮尔斯(Benjamin Pierce)的教科书将涵盖宽度和深度子类型的基本结果,以及它们如何很好地处理类型推断。(我想自己看看,但我的副本还在工作。)
- 弗朗索瓦·波蒂埃博士论文
如果这个问题有一个独特的答案,我会非常惊讶。我认为这很可能是语言设计中的一个问题,其中有一系列的解决方案,就最低限度和注释而言,是绝对无法比拟的。Jim:如果是的话,我很高兴这不是我的家庭作业,因为我真的很难弄明白他在说什么:)很高兴能难倒你们所以我想我想了解的是:类型推断是如何实现的?什么样的继承支持?当没有显式类型时,如何继承?添加继承不意味着您将获得显式类型吗?或者你是在暗示什么?我认为上面提到的问题没有足够的上下文来得到有意义的答案。吉姆:如果是的话,我很高兴这不是我的家庭作业,因为我真的很难弄明白他在说什么:)先生们,我很高兴能难倒你们所以我想我想了解的是:类型推断是如何实现的?什么样的继承支持?当没有显式类型时,如何继承?添加继承不意味着您将获得显式类型吗?或者你是在暗示别的什么?我认为上面提到的问题没有足够的上下文来得到有意义的答案。