Comment lire les règles de frappe?


18

J'ai commencé à lire de plus en plus d'articles de recherche linguistique. Je trouve cela très intéressant et un bon moyen d'en savoir plus sur la programmation en général. Cependant, il y a généralement une section avec laquelle je me bats toujours (prenez par exemple la troisième partie de cela ) car je n'ai pas la formation théorique en informatique: les règles de type.

Existe-t-il de bons livres ou des ressources en ligne pour commencer dans ce domaine? Wikipédia est incroyablement vague et n'aide pas vraiment un débutant.


1
Avez-vous lu l'article lié sur les règles d'inférence ?
Raphael

2
Le TAPL de Benjamin Pierce est vraiment bon.
Gilles 'SO- arrête d'être méchant'

Réponses:


25

Dans la plupart des systèmes de types, les règles de type fonctionnent ensemble pour définir des jugements de la forme:

Γe:τ

Cela indique que dans le contexte l'expression a le type . est une cartographie des variables libres de à leurs types.e τ Γ eΓeτ
Γe

Un système de types consistera en un ensemble d'axiomes et de règles (un système formel de règles d'inférence , comme le souligne Raphaël).

Un axiome est de la forme

Γe:τ

Cela indique que le jugement est (toujours).Γe:τ

Un exemple est

X:τX:τ

qui stipule que dans l'hypothèse où le type de variable est , alors l'expression a le type .τ x τXτXτ

Les règles d'inférence prennent des faits qui ont déjà été déterminés et en construisent des faits plus larges. Par exemple, la règle d'inférence

Γe1:ττΓe2:τΓe1 e2:τ

dit que si j'ai une dérivation du fait et une dérivation du fait , alors je peux obtenir une dérivation du fait . Dans ce cas, c'est la règle pour taper l'application de fonction. Γ e 2 : τ Γ e 1 e 2 : τ Γe1:ττΓe2:τΓe1 e2:τ

Il existe deux manières de lire cette règle:

  • de haut en bas - étant donné deux expressions (une fonction et une autre expression) et quelques contraintes sur leur type, nous pouvons construire une autre expression (l'application de la fonction à l'expression) avec le type donné.
  • de bas en haut - étant donné une expression qui est, dans ce cas, l'application d'une fonction à une expression, la façon dont elle est typée est en tapant d'abord les deux expressions, en s'assurant que leurs types satisfont à certaines contraintes, à savoir que la première est un type de fonction et que le second a le type d'argument de la fonction.

Certaines règles d'inférence manipulent également en y ajoutant de nouveaux ingrédients (vue de bas en haut). Voici la règle pour -abstraction:λΓλ

ΓX:τe:τΓλX.e:ττ

Les règles d'inférence sont appliquées de manière inductive en fonction de la syntaxe de l'expression considérée pour former un arbre de dérivation. Aux feuilles de l'arbre (en haut) seront des axiomes, et des branches seront formées en appliquant des règles d'inférence. Tout en bas de l'arborescence se trouve l'expression que vous souhaitez saisir.

Par exemple, une dérivation du typage de l'expression estλF.λX.F X

F:ττ,X:τF:ττF:ττ,X:τX:τF:ττ,X:τF X:τF:ττλX.F X:τλF.λX.F X:τ
Deux très bons livres pour apprendre sur les systèmes de types sont:

Les deux livres sont très complets, mais ils commencent lentement, construisant une base solide.



5

Dans cette page Wikipédia, il est recommandé de " Type Systems, Luca Cardelli, ACM Computing Surveys ", qui est une enquête de 2 pages qui peut vous aider à comprendre comment lire une règle. Quoi qu'il en soit, la façon de lire une règle est parfaitement expliquée dans cette page Wikipédia (ou encore mieux dans l'enquête de 2 pages). Cependant, pour comprendre le tout, vous devez comprendre ce qu'est un système de frappe (composé de plusieurs règles), pour lequel l'article Wikipedia " Type system " est un bon début (et vous avez plusieurs livres dans la section " Références " de ce page si vous voulez aller plus loin).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.