如何阅读打字规则?


18

我开始阅读越来越多的语言研究论文。我发现它非常有趣,并且是一种全面学习编程的好方法。然而,通常是一个部分,在那里我总是(就拿第三部分的奋斗),因为我没有在计算机科学的理论背景:类型规则。

是否有任何好的书籍或在线资源可用于该领域的入门?维基百科含糊不清,对初学者没有任何帮助。


1
您是否阅读了有关推理规则的链接文章?
拉斐尔

2
本杰明·皮尔斯的TAPL确实很棒。
吉尔斯(Gilles)'“ SO-不要邪恶”

Answers:


25

在大多数类型系统中,类型规则共同定义以下形式的判断:

ΓËτ

这说明在上下文,表达式类型为。是的自由变量到其类型的映射。Ë τ Γ ëΓËτ
ΓË

类型系统将由一组公理和规则(如Raphael所指出的,一个正式的推理规则系统)组成。

公理的形式为

ΓËτ

这说明判决(始终)成立。ΓËτ

一个例子是

XτXτ

它声明在假设变量的类型为,表达式类型为。τ X τXτXτ

推理规则将使用已经确定的事实,并从中构建更大的事实。例如推理规则

ΓË1个ττΓË2τΓË1个 Ë2τ

说如果我有一个事实和一个事实的派生,那么我可以得到一个事实。在这种情况下,这是键入功能应用程序的规则。 Γ ë 2τ Γ ë 1 Ë 2τ 'ΓË1个ττΓË2τΓË1个 Ë2τ

有两种读取此规则的方法:

  • 自上而下-给定两个表达式(一个函数和另一个表达式)以及它们的类型约束,我们可以构造具有给定类型的另一个表达式(函数在表达式中的应用)。
  • 自下而上-给定一个表达式,在这种情况下,就是将函数应用于某个表达式,这种类型的键入方式是先键入两个表达式,确保它们的类型满足某些约束,即第一个是a函数类型,第二个具有函数的参数类型。

一些推理规则还通过在添加新成分来操纵(自下而上查看)。这是 -abstraction 的规则:λΓλ

ΓXτËτΓλXËττ

基于被认为形成派生树的表达式的语法,归纳应用推理规则。在树的叶子处(顶部)是公理,并且将通过应用推理规则来形成分支。在树的最底部是您有兴趣键入的表达式。

例如,表达式的类型的派生是λFλXF X

FττXτFττFττXτXτFττXτF XτFττλXF XτλFλXF Xτ
用于学习类型系统的两本非常不错的书是:

这两本书都很全面,但是起步缓慢,奠定了坚实的基础。



5

在该Wikipedia页面中,建议“ Type Systems,Luca Cardelli,ACM Computing Surveys ”,这是一个两页的调查,可以帮助您了解如何阅读规则。无论如何,如何阅读规则在该Wikipedia页面(甚至在两页调查中甚至更好)中得到了很好的解释。但是,要了解整个内容,您需要了解什么是打字系统(由多个规则组成),对于它来说,“ 类型系统 ”的Wikipedia文章是一个好的开始(并且在该书的“ 参考 ” 部分中有几本书)页面,如果您想走得更远)。

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.