2016-09-14 2 views
5

nur einen Blick auf Ulme Code zu nehmen und über die folgende Typdefinition kam:Elm rekursiven Definition

type Cmd msg = Cmd 

Ich kann einfach nicht scheinen zu verstehen, wie das funktioniert. Jeder kann es erklären?

Antwort

10

Das ist keine rekursive Typdefinition, es definiert einen Typ Cmd als Unionstyp mit einem Label, Cmd, das keine zusätzlichen Informationen enthält. Normalerweise sollen solche Definitionen signalisieren, dass der Typ Werte repräsentiert, die in Ulm keine individuelle Bedeutung haben.

In diesem Fall wird der Typ auf diese Weise definiert, da alle Operationen auf Cmd im Plattformcode verborgen sind. Daher müssen die Benutzer Cmd-Werte nicht untersuchen oder destrukturieren. Cmd muss eine Typvariable verfügbar machen, um die Typsicherheit von Cmd-Werten zu erhalten, da sie eine Zusicherung einkapseln, eine Nachricht eines bestimmten Typs zu liefern, und dieser Typ kann über Cmd.map geändert werden.