Wie lese ich Tippregeln?


18

Ich fing an, immer mehr sprachwissenschaftliche Artikel zu lesen. Ich finde es sehr interessant und eine gute Möglichkeit, mehr über das Programmieren im Allgemeinen zu lernen. Es gibt jedoch normalerweise einen Abschnitt, mit dem ich immer zu kämpfen habe (nehmen Sie zum Beispiel Teil drei davon ), da mir der theoretische Hintergrund in der Informatik fehlt: Typregeln.

Gibt es in diesem Bereich gute Bücher oder Online-Ressourcen für den Einstieg? Wikipedia ist unglaublich vage und hilft Anfängern nicht wirklich.


1
Haben Sie den verlinkten Artikel über Inferenzregeln gelesen ?
Raphael

2
Benjamin Pierces TAPL ist wirklich gut.
Gilles 'SO- hör auf böse zu sein'

Antworten:


25

In den meisten Typsystemen arbeiten die Typregeln zusammen, um Urteile der Form zu definieren:

Γe:τ

Dies besagt, dass im Kontext der Ausdruck den Typ . ist eine Abbildung der freien Variablen von auf ihre Typen.e τ Γ eΓeτ
Γe

Ein Typensystem besteht aus einer Reihe von Axiomen und Regeln (ein formales System von Inferenzregeln , wie Raphael hervorhebt).

Ein Axiom ist von der Form

Γe:τ

Dies besagt, dass das Urteil (immer) gilt.Γe:τ

Ein Beispiel ist

x:τx:τ

die besagt , daß unter der Annahme , dass die Art der Variablen x ist τ , dann wird der Ausdruck x hat Typ τ .

Inferenzregeln nehmen bereits ermittelte Tatsachen und bauen daraus größere Tatsachen auf. Zum Beispiel die Inferenzregel

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

sagt, wenn ich eine Ableitung der Tatsache und eine Ableitung der Tatsache Γ Γ e 2 : τ habe , dann kann ich eine Ableitung der Tatsache . In diesem Fall ist dies die Regel für die Eingabe von Funktionsanwendungen.Γe1:ττΓe2:τΓe1 e2:τ

Es gibt zwei Möglichkeiten, diese Regel zu lesen:

  • top-down - Wenn zwei Ausdrücke (eine Funktion und ein anderer Ausdruck) und einige Einschränkungen für ihren Typ gegeben sind, können wir einen weiteren Ausdruck (die Anwendung der Funktion auf den Ausdruck) mit dem gegebenen Typ konstruieren.
  • bottom-up - bei einem Ausdruck, bei dem es sich in diesem Fall um die Anwendung einer Funktion auf einen Ausdruck handelt, werden zuerst die beiden Ausdrücke eingegeben, um sicherzustellen, dass ihre Typen bestimmten Bedingungen entsprechen, d. h Funktionstyp und dass der zweite den Argumenttyp der Funktion hat.

Einige Inferenzregeln manipulieren auch indem sie neue Zutaten hinzufügen (von unten nach oben betrachtet). Hier ist die Regel für -abstraction:λΓλ

Γx:τe:τΓλx.e:ττ

Die Inferenzregeln werden induktiv angewendet, basierend auf der Syntax des Ausdrucks, der als Ableitungsbaum betrachtet wird. An den Blättern des Baumes (oben) werden Axiome und Zweige gebildet, indem Folgerungsregeln angewendet werden. Ganz unten im Baum befindet sich der Ausdruck, den Sie eingeben möchten.

λf.λx.f x

f:ττ,x:τf:ττf:ττ,x:τx:τf:ττ,x:τf x:τf:ττλx.f x:τλf.λx.f x:τ

Beide Bücher sind sehr umfangreich, beginnen jedoch langsam und bilden ein solides Fundament.



5

Auf dieser Wikipedia-Seite wird " Type Systems, Luca Cardelli, ACM Computing Surveys " empfohlen. Hierbei handelt es sich um eine 2-seitige Umfrage, die Ihnen helfen kann, das Lesen einer Regel zu verstehen. Wie auch immer, wie man eine Regel liest, wird auf dieser Wikipedia-Seite (oder noch besser in der 2-Seiten-Umfrage) perfekt erklärt. Doch das Ganze zu verstehen, müssen Sie verstehen , was ein Typisierungssystem ist (von mehreren Regeln zusammengesetzt), für die der „ Type System “ Wikipedia - Artikel ist ein guter Anfang (und Sie haben mehrere Bücher im Abschnitt „ Referenzen “ davon Seite, wenn Sie weiter gehen möchten).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.