2017-01-25 4 views
1

Beim Erklären der Vorlage Expansion im Kapitel über persistenten, Jessod Buch hat etwas wieTyp Familien in Persistent Bibliothek

newtype Key Person = PersonKey (BackendKey SqlBackend) 

die Suche Ich bin nicht ganz sicher, wie diese newtype Erklärung zu lesen: ist PersonKey a etwas bereits definiert woanders (könnte nicht finden Sie seine Definition obwohl) oder ist PersonKey nur ein gewöhnlicher Typ oder Wert Konstruktor wie Just/Nothing/Left/etc. ?

Antwort

1

Ordnung, zu vereinfachen nur ein bisschen zunächst wollen wir so tun, als es sagte: „Daten Konstruktor“

newtype KeyPerson = PersonKey (BackendKey SqlBackend) 

In diesem Fall würde der KeyPerson „Typkonstruktor“ sein, und PersonKey würde das sein Wir würden beide hier schaffen. Der Datenkonstruktor PersonKey würde einen Wert vom Typ BackendKey SqlBackend enthalten, der an anderer Stelle existieren und von hier referenziert werden müsste.

In diesem Fall sind wir in der Regel damit verbundene Typen (auch bekannt als Familien Typ), die Dinge leicht komplizierter machen. newtype Key Person bedeutet „wir ein zugehöriges Key für den Person Typen sind definiert, aber wir sind noch zu schaffen ein PersonKey Daten Konstruktor wie zuvor

+2

Antwort kopiert von einer E-Mail von Michael Snoyman mit seiner Erlaubnis geschickt – Grisha