受到复杂性理论中广泛的层次结构的启发,我想知道类型系统是否也存在这种层次结构。但是,到目前为止,我发现的两个示例都更像是清单(具有正交特征),而不是层次结构(具有越来越多的表现型类型系统)。
我发现的两个示例是Lambda多维数据集和k级多态性的概念。第一个是具有三个选项的清单,第二个是真实的层次结构(尽管我相信,针对k的特定值对k排序并不常见)。我知道的所有其他类型的系统特征大部分都是正交的。
我对这些概念很感兴趣,因为我正在设计自己的语言,并且很好奇它在当前现有类型系统中的排名(据我所知,我的类型系统有些不常规)。
我意识到“表达性”的概念可能有点含糊,这可以解释为什么类型系统在我看来像清单。
4
我敢肯定,只有在较为理论化的类型系统之间才能进行快速而严格的表现力比较。如果要设计一种完整的编程语言,则可以与现有语言/形式主义进行逐项比较。不幸的是,由于许多功能可以按照其他功能进行编码,因此这并不是一件容易的事。如果您可以拥有像Scala或Haskell一样的类型,那么在表现力方面您会做得很好。
—
戴夫·克拉克
我真的应该finsih写我的博客文章“如何比较编程语言” ...
—
Andrej Bauer
@Andrej Bauer:这将是对此处已经存在的答案和评论的有趣补充。我已经学到了很多有关如何定义“表达力”的知识-也许我应该问一下……
—
Alex 10 Brink
我确定我在一些地方看到了Rank-2多态性。我现在记得的一个是Lammel,Peyton-Jones,《报废你的样板》,2003
—
。– Radu GRIGore 2011年
@Radu GRIGore:Rank-2多态性很重要,因为它允许类型参数出现在双协变位置,而按通常的对偶方式,则允许通过其Church编码来建模存在类型。等级3再次给出了通用量化,并且从那里开始交替进行,因此相比而言,几乎没有增加表达力。
—
CA McCann