11

Quer durch Programmiersprachen, habe ich ähnliche composite types mit verschiedenen Namen auftreten:Was sind "Vokabeltypen" und wie viele existieren?

  1. Optional/Maybe
  2. Any
  3. Variant/Sum
  4. Record/Product

oft Menschen den Wortschatz Typ Begriff verwenden ,
Noch habe ich nie eine Definition von dem, was einen Typ "Vokabular" macht, gesehen.

Hat dieser Begriff eine lockere Definition?
Was sagen die Typentheorie und andere Programmiersprachen über Vokabeltypen?

Liegt alles über einem Vokabular? Sind da mehr?

+8

Können Sie irgendwelche Links/Zitate für den Begriff "Vokabeltyp" im Kontext geben? Ich habe es vorher noch nie gesehen und bin gespannt, ob es helfen würde, mehr Hintergrund für eine Antwort zu liefern. Dies sind meist [algebraische Datentypen] (https://en.wikipedia.org/wiki/Algebraic_data_type). –

+0

Wie Jon gesagt hat, wo haben Sie Vokabeltyp in Bezug auf diese Begriffe verwendet? Nicht etwas, auf das ich gestoßen bin, selbst nachdem ich eine Internetsuche danach gemacht habe – Dijkgraaf

+0

Zeigen Sie uns die Referenz, aber ich denke, es bedeutet, dass es verschiedene Arten von Vokabularen gibt, die sich auf einen bestimmten Typ beziehen! –

Antwort

3

Mein Verständnis von Vokabular in Bezug auf Programmierung und Vokabeltyp im Allgemeinen ist etwas, das bestimmten Objekten Eigenschaften mit gut definierter Bedeutung gibt.

Hier sind einige Beispiele in Haskell:

Optional/Maybe Typ Betrachten und eine reine Funktion, die HTTP-Antwort eines Web-Servers übernimmt und Code der extrahiert Antwort.

getCode :: String -> Int 

Jetzt, als wir diese Funktion wir nicht wissen, laufen nehme an, wenn Antwort erfolgreich war oder nicht - Code überhaupt nicht vorhanden sein könnten. Wie stellen wir den Fall dar, wenn Code fehlt? Wir können einigen künstlichen Wertes -1 oder 0 zuweisen oder wir können ganzen Funktionstyp dies ändern:

getCode :: String -> Maybe Int 

Zusätzlich Maybe bilden ein Monad, Functor, Applicative, Foldable und ein paar anderen typeclasses in Haskell. Jede Typklasse fügt zusätzliche Fähigkeiten hinzu, um den fraglichen Wert zu manipulieren, während seine Anwesenheit/Abwesenheit respektiert wird.

Product/Sum Typ Haskell sind als Paare dargestellt und Either a b. Wiederum - definiere etwas über Product oder Sum fügt eine gut definierte Bedeutung Product a b - beide Werte müssen vorhanden sein, Sum a b - ein Wert muss vorhanden sein und fügt eine Reihe von Gesetzen kostenlos hinzu.

+0

Ich denke, diese Antwort fehlt etwas die Frage, die ist "was macht ein Typ" Vokabular "?" Im Gegensatz zu "Was machen diese Typen?". – Alec

+0

'Gut definierte Bedeutung ist'.Für diejenigen, die sich mit mathematischen/programmtechnischen Begriffen auskennen: "Diese Operation in kommutativem und assoziativem Modus" sagt ungefähr so ​​viel über den Vorgang aus wie "Typ von' Thing' ist 'Maybe Stuff'". – user8242965