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.
Réponses:
Dans la plupart des systèmes de types, les règles de type fonctionnent ensemble pour définir des jugements de la forme:
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
Cela indique que le jugement est (toujours).Γ ⊢ e : τ
Un exemple est
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
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:
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:λΓ λ
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
Les deux livres sont très complets, mais ils commencent lentement, construisant une base solide.
la source
Il existe un joli didacticiel interactif en ligne sur le calcul séquentiel, qui peut aider à construire certaines intuitions et à ressentir le fonctionnement de l'inférence: Un didacticiel interactif du calcul séquentiel
la source
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).
la source