926 Stimmen

Welchen Teil von Hindley-Milner haben Sie nicht verstanden?

I schwören Früher gab es eine T-shirt mit den unsterblichen Worten zu verkaufen:


Welcher Teil von

Hindley-Milner

Haben Sie pas verstehen?


In meinem Fall wäre die Antwort... alles!

Vor allem in Haskell-Papieren sehe ich oft solche Notationen, aber ich habe keine Ahnung, was sie bedeuten. Ich habe keine Ahnung, um welchen Zweig der Mathematik es sich handeln soll.

Ich erkenne natürlich die Buchstaben des griechischen Alphabets und Symbole wie "" (was normalerweise bedeutet, dass etwas kein Element einer Menge ist).

Andererseits habe ich "" noch nie gesehen ( Wikipedia behauptet, es könnte "Teilung" bedeuten ). Auch die Verwendung des Vinculums ist mir hier nicht geläufig. (Normalerweise bezeichnet es einen Bruch, aber das tut es nicht erscheinen hier der Fall ist).

Wenn mir jemand wenigstens sagen könnte, wo ich anfangen soll zu suchen, um zu verstehen, was dieses Meer von Symbolen bedeutet, wäre das sehr hilfreich.

15voto

Per Persson Punkte 177

Es gibt zwei Möglichkeiten, sich e : vorzustellen. Die eine ist "der Ausdruck e hat den Typ", die andere ist "das geordnete Paar aus dem Ausdruck e und dem Typ".

Ansicht als das Wissen über die Arten von Ausdrücken, umgesetzt als eine Menge von Paaren von Ausdruck und Typ, e : .

Das Drehkreuz bedeutet, dass wir von dem Wissen auf der linken Seite auf das Wissen auf der rechten Seite schließen können.

Die erste Regel [Var] kann also lauten:
Wenn unser Wissen das Paar e : enthält, dann können wir daraus ableiten, dass e den Typ hat.

Die zweite Regel [App] kann gelesen werden:
Wenn wir von ableiten können, dass e_0 den Typ ' hat, und wir von ableiten können, dass e_1 den Typ hat, dann können wir von ableiten, dass e_0 e_1 den Typ ' hat.

Es ist üblich, , e : anstelle von {e : }.

Die dritte Regel [Abs] kann also lauten:
Wenn wir aus erweitert mit x : ableiten können, dass e den Typ ' hat, dann können wir aus ableiten, dass x.e den Typ ' hat.

Die vierte Regel [Let] bleibt als Übung übrig :-)

Die fünfte Regel [Inst] kann gelesen werden:
Wenn wir von ab ableiten können, dass e den Typ ' hat, und ' ein Subtyp von ist, dann können wir von ab ableiten, dass e den Typ hat.

Die sechste und letzte Regel [Gen] kann gelesen werden:
Wenn wir von ab ableiten können, dass e den Typ hat und in keinem der Typen in eine Variable vom freien Typ ist, dann können wir von ab ableiten, dass e den Typ hat.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X