Generics 单形泛型是否可以继承公共基类?

Generics 单形泛型是否可以继承公共基类?,generics,compiler-construction,monomorphism,Generics,Compiler Construction,Monomorphism,让我们假设我将开发一种新的编程语言L L应支持编译时的类型推断和类型检查,特别是支持编译时操作: isSubtypeOf检查一个类型是否是另一个类型的子类型 DownCast将类型强制转换为其超类型之一 L还支持通用语法,例如可以通过单构词法进行翻译 让我们假设L的以下语法(示例) 等级混凝土{ foo:Int 条形图:布尔值 } 类属性{ 值:T } 分类栏{ 福:财产 酒吧:酒店 } 现在,在单晶化之后,代码可能如下所示(): 等级混凝土{ foo:Int 条形图:布尔值 } 类

让我们假设我将开发一种新的编程语言
L

  • L
    应支持编译时的类型推断和类型检查,特别是支持编译时操作:
    • isSubtypeOf
      检查一个类型是否是另一个类型的子类型
    • DownCast
      将类型强制转换为其超类型之一
  • L
    还支持通用语法,例如可以通过单构词法进行翻译
让我们假设
L
的以下语法(示例)

等级混凝土{
foo:Int
条形图:布尔值
}
类属性{
值:T
}
分类栏{
福:财产
酒吧:酒店
}
现在,在单晶化之后,代码可能如下所示():

等级混凝土{
foo:Int
条形图:布尔值
}
类属性{
值:Int
}
类属性{
值:布尔值
}
分类栏{
foo:Property_Int
条形图:属性
}
但是在该单态代码中,关于
Property\u Int
Property\u Boolean
的公共性的所有信息都丢失了。但我仍然希望使用在编译时可以访问的信息

问题: 这样做是否明智,因为两个单态实例都继承了一个公共基?这是概念的一部分还是关于泛型的另一个概念可以更好地映射到这个需求

class Any{}
等级混凝土{
foo:Int
条形图:布尔值
}
类属性{
价值:任何
}
类属性\u Int:Property{
值:Int
}
类属性\布尔值:属性{
值:布尔值
}
分类栏{
foo:Property_Int
条形图:属性
}
在这个最新的代码片段中,很容易静态地评估
Property\u Int
Property\u Boolean
是否有一个共同的基础