类型系统是否有表达层级?


23

受到复杂性理论中广泛的层次结构的启发,我想知道类型系统是否也存在这种层次结构。但是,到目前为止,我发现的两个示例都更像是清单(具有正交特征),而不是层次结构(具有越来越多的表现型类型系统)。

我发现的两个示例是Lambda多维数据集k级多态性的概念。第一个是具有三个选项的清单,第二个是真实的层次结构(尽管我相信,针对k的特定值对k排序并不常见)。我知道的所有其他类型的系统特征大部分都是正交的。

我对这些概念很感兴趣,因为我正在设计自己的语言,并且很好奇它在当前现有类型系统中的排名(据我所知,我的类型系统有些不常规)。

我意识到“表达性”的概念可能有点含糊,这可以解释为什么类型系统在我看来像清单。


4
我敢肯定,只有在较为理论化的类型系统之间才能进行快速而严格的表现力比较。如果要设计一种完整的编程语言,则可以与现有语言/形式主义进行逐项比较。不幸的是,由于许多功能可以按照其他功能进行编码,因此这并不是一件容易的事。如果您可以拥有像Scala或Haskell一样的类型,那么在表现力方面您会做得很好。
戴夫·克拉克

3
我真的应该finsih写我的博客文章“如何比较编程语言” ...
Andrej Bauer

@Andrej Bauer:这将是对此处已经存在的答案和评论的有趣补充。我已经学到了很多有关如何定义“表达力”的知识-也许我应该问一下……
Alex 10 Brink

我确定我在一些地方看到了Rank-2多态性。我现在记得的一个是Lammel,Peyton-Jones,《报废你的样板》,2003
。– Radu GRIGore 2011年

2
@Radu GRIGore:Rank-2多态性很重要,因为它允许类型参数出现在双协变位置,而按通常的对偶方式,则允许通过其Church编码来建模存在类型。等级3再次给出了通用量化,并且从那里开始交替进行,因此相比而言,几乎没有增加表达力。
CA McCann

Answers:


22

对于类型系统,可能需要几种“表达性”的感觉。

  1. F

  2. ABFF

  3. AB

  4. 一种类型的系统是否保证比另一种类型的系统具有更强的性能。例如,线性类型的系统仅拒绝更多的程序,但这使它们可以对他们接受的程序做出更强的陈述。

不幸的是,除了@cody讨论的Barendregt的lambda-cube之外,我不相信有人在对这些概念进行分类或形式化。


3
我猜在“ Felleisen的表现力论文”中,您的意思是他的《论编程语言的表现力》
Martin Berger

对,就是这样。我澄清了答案。
山姆·托宾·霍斯塔特

13

我不确定您对这个问题的回答是否令人满意,但是如果您考虑使用Pure Type系统,它是lambda多维数据集中找到的系统的概括(可以在经典的Barendregt文本中找到完整的,如果有些过时的概述),然后有几个自然的层次结构概念:

  1. ΓA t:TΓB t:TΓ,tT:(,,)PTS意味着每个其他PTS都有一个态射。这可以看作是类型系统表达能力的一种度量,其中最终的PTS是表达能力最高的系统。

  2. ABAFωECC

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.