Gerätetyp

Alf Bischof April 6, 2016 G 1 0
FONT SIZE:
fontsize_dec
fontsize_inc

Im Bereich der mathematischen Logik und Informatik als Typ-Theorie bekannt, ist ein Einheitstyp ein Typ, der nur einen Wert ermöglicht. Die mit einem Gerätetyp zugeordnet Träger kann jeder Singleton-Menge. Es gibt ein Isomorphismus zwischen zwei solcher Sätze, so ist es üblich, um den Gerätetyp zu reden und ignorieren die Details sein Wert ist. Man kann auch sehen den Einheitstyp als Typ 0-Tupel, dh das Produkt von nicht-Typen.

Der Gerätetyp ist das Terminal-Objekt in der Kategorie der Typen und Funktionen eingegeben. Es sollte nicht mit der Null oder der Art des Bodens, der keine Messwerte ermöglicht und das anfängliche Objekt in dieser Kategorie zu verwechseln.

Der Gerätetyp ist in den meisten funktionalen Programmiersprachen implementiert. Das Hohlraumtyp, der in einigen imperativen Programmiersprachen verwendet wird, dient einige seiner Funktionen, sondern weil ihre Trägermenge leer ist, hat es einige Einschränkungen.

In Programmiersprachen

Mehrere Computerprogrammiersprachen einen Gerätetyp, den Typ des Ergebnisses einer Funktion mit dem einzigen Zweck, was zu einer Nebenwirkung, und der Argumenttyp einer Funktion, die Argumente erfordert angeben.

  • In Haskell wird der Gerätetyp genannt und seine einzige Wert ist auch, was die 0-Tupel-Interpretation.
  • In ML wird die Art genannt, aber der Wert als geschrieben.
  • In Scala wird der Gerätetyp genannt und seine einzige Wert wird als geschrieben.
  • In Common Lisp der Typ mit dem Namen NULL ist eine Einheit der Art, die einen Wert, nämlich das Symbol NIL hat. NIL selbst wird als der Name des Untertyps.
  • In Python gibt es einen Typ namens, der die einheitliche Wert ermöglicht.
  • In C ++ 11, gibt es einen Typ genannt, die nur den Wert zu speichern.
  • In Swift ist der Gerätetyp genannt oder und seine einzige Wert ist auch, was die 0-Tupel-Interpretation.
  • In Rust wird der Gerätetyp ausgesprochen "Einheit" und verfasst.

Der Gerätetyp ist auch in Funktionen, ohne Nebenwirkungen sinnvoll, wenn die Programmiersprache unterstützt algebraischen Datentypen. Alle nullary Daten Konstruktor ist effektiv isomorph mit dem Einheitentyp. Man kann die semipredicate Problem elegant in einer solchen Sprache zu lösen, indem Sie die "Fehler" codiert, wie vom Gerätetyp. In Haskell wird die polymorphe Typ für diesen Zweck vorgegeben. Hier ist isomorph zum Gerätetyp:

Der Typ wird die Option Typ im Typentheorie genannt.

Hohlraumtyp als Gerätetyp

In C, C ++, C # und Java, drückt die Leertyp. Der Gerätetyp in C wäre, aber eine leere Struktur wird durch die C-Sprachspezifikation verboten. Statt Hohlraum in einer Weise, dass einige simuliert verwendet, aber nicht alle, von den Eigenschaften der Gerätetyp, wie unten beschrieben. Wie die meisten imperativen Sprachen, C ermöglicht Funktionen, die keinen Wert zurückzugeben; diese werden als mit dem Rückgabetyp void spezifiziert. Solche Funktionen werden Verfahren in anderen imperativen Sprachen wie Pascal, wo eine syntaktische Unterscheidung statt Typsystem Unterscheidung zwischen Funktionen und Prozeduren hergestellt genannt.

Unterschied in der Aufrufkonvention

Die erste bemerkenswerte Unterschied zwischen einem echten Einheitstyp und dem Hohlraumtyp ist, dass die Art der Einheit kann immer der Typ des Arguments einer Funktion, aber der Hohlraumtyp nicht der Typ eines Arguments in C, trotz der Tatsache, daß es erscheint als einziges Argument in der Liste. Dieses Problem wird am besten durch das folgende Programm, das ein Fehler bei der Kompilierung in C ist veranschaulicht:

Dieses Problem tritt nicht in den meisten Programmiersprachen Praxis in C entstehen, denn seit die Art trägt keine Information, ist es nutzlos, es trotzdem zu übergeben; aber es kann in der generischen Programmier auftauchen, wie etwa C ++ Vorlagen, wobei muss anders als andere Arten behandelt werden. In C ++ jedoch leere Klassen sind erlaubt, so dass es möglich ist, eine echte Einheit der Art durchzuführen; Das obige Beispiel wird kompilierbar als:

Unterschied in der Speicher

Die zweite bemerkenswerter Unterschied ist, dass die Hohlraumtyp, leer ist, kann niemals in einem Plattentyp, dh in einer Struktur oder einer Klasse in C / C ++ gespeichert werden. Im Gegensatz dazu kann der Gerätetyp in Datensätzen in funktionalen Programmiersprachen gespeichert werden, dh er kann als Typ eines Feldes erscheinen; die obige Umsetzung der Gerätetyp in C ++ können auch gespeichert werden. Während dies ein nutzloses Feature scheint, tut es erlauben zum Beispiel, um elegant zu implementieren einen Satz als eine Karte, um den Gerätetyp; in der Abwesenheit von einem Gerätetyp, kann man noch zu implementieren einen Satz auf diese Weise, indem einige Dummy-Wert eines anderen Typs für jede Taste.

In Generics

In Java Generics, müssen Typparametern Referenztypen sein. Der Wrapper-Typ wird oft verwendet, wenn ein Gerätetyp-Parameter ist erforderlich. Obwohl der Typ kann nie alle Instanzen haben, hat es einen Wert ,, so dass es als eine Einheit Typ wirkt. In der Praxis kann jede andere nichtinstanziierbare Typ, beispielsweise kann für diesen Zweck verwendet werden, da sie auch genau einen Wert ,.

  Like 0   Dislike 0
Vorherige Artikel Robert I. Chester
Nächster Artikel Schmeichler
Bemerkungen (0)
Keine Kommentare

Fügen Sie einen Kommentar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Zeichen übrig: 3000
captcha