Ühiktüüp

Ühiktüüp on tüübiteoorias tüüp, millel saab olla ainult üks väärtus (ning seega ei saa see kanda informatsiooni). Kandja (ühiktüübiga seotud hulk) saab olla mistahes ühe elemendiga hulk. Seda laadi hulkade vahel eksisteerib isomorfism ning seetõttu räägitakse ühiktüübist kui tüübist, ning selle väärtuse üksikasju ei peeta tähtsaks. Ühiktüüpi saab lugeda ka 0-ennikuks (või 0-järjendiks).

Ühiktüüp on tüüpide ja tüübitud funktsioonide kategooria lõppobjekt. Seda ei tohi segamini ajada tühja tüübiga, mis ei luba ühtegi väärtust ning on selle kategooria algusobjekt. Sarnaselt on tõeväärtus (ehk Boolean) tüüp kahe väärtusega. Vastates lõppobjektile on tüübiteoorias võimalik mistahes tüübi  puhul alati võimalik defineerida funktsioon tüübiga , kus  on ühiktüüp.

Ühiktüüp on saadaval enamikus funktsionaalsetes programmeerimiskeeltes. Tüüp "void" on kasutusel paljudes üldlevinud programmeerimiskeeltes, muuhulgas C, C++ ja Java keeles, aga kuna selle kandjahulk on tühi, on sellel tüübil teatud piirangud.

 Programmeerimiskeeltes 
Paljud programmeerimiskeeled pakuvad ühiktüüpi, et määrata tagastustüüp funktsioonidel, mille ainus eesmärk on tekitada kõrvalmõjusid. Funktsionaalsetes keeltes kasutatakse seda funktsiooni ka parameetrina, kui funktsioon ei võta väärtusena ühtegi parameetrit.

 Haskellis ja Rustis on ühiktüüp () ja tema ainus väärtus on samuti (), mis viitab 0-enniku definitsioonile.
 ML-i keeles ja tema järglastes (sealhulgas OCaml, Standard ML ja F#) on tüübi nimi unit, aga väärtus on ().
 Common Lispi keeles on tüübi nimi NULL ja tal on vaid üks väärtus nimega NIL. 
 Pythoni keeles on tüüp NoneType, millel on üks väärtus None.
 Javas on tüüp Void ja selle ainus väärtus on null.
 JavaScriptis on tüüp Null väärtusega null ja tüüp Undefined väärtusega undefined.
 C++is lisati C++17-ga tüüp std::monostate. Enne seda oli võimalik defineerida ühiktüüp ise, näiteks struct empty{}.

 Viited 

 Välislingid 
 "Unit type" veebilehel nLab

Kategooria:Andmetüübid
Kategooria:Programmeerimine
Kategooria:Informaatika