W językach programowania typ pierwszoklasowy (ang. first-class type), jak również obiekt pierwszoklasowy (ang. first-class object) czy ogólniej jednostka pierwszej kategorii (ang. first-class citizen) jest konstruktem służącym do przechowywania danych, na którym możemy wykonywać takie same operacje, jak na danych innych, wbudowanych typów, takich jak np. liczby czy ciągi znaków.
Obiekt typu pierwszoklasowego ma więc następujące właściwości:
- może być przechowywany w zmiennych (bądź wiązany z nazwą, gdy język nie obsługuje typowych zmiennych) i stanowić element złożonych struktur danych;
- może być przekazywany jako wartość argumentu podczas wywoływania procedury/funkcji;
- może być zwracany przez procedury/funkcje;
- może być tworzony podczas działania programu;
- ma ekstensjonalną tożsamość (zależną od wartości, niezależną od nazwy).
Wobec powyższych musi mieć takie same właściwości, jak dane typów wbudowanych[1].
W językach silnie obiektowo zorientowanych, takich jak Python, każda klasa wartości jest typem pierwszoklasowym (liczby, klasy, łańcuchy znaków, listy, funkcje) implementowanym na bazie obiektowego systemu typów. Ciekawym przykładem są również dialekty języka Lisp, a także inne języki homoikoniczne (np. Prolog, SNOBOL czy Rebol), gdzie jednostkami pierwszej kategorii są nawet wyrażenia kodu źródłowego. Otwiera to drogę do rozszerzania języków o nowe konstrukcje i budowania zagnieżdżonych interpreterów języków dziedzinowych.
Jeżeli w danym języku funkcje są jednostkami pierwszej kategorii (występuje tzw. typ funkcyjny), można w nim definiować funkcje wyższego rzędu (operujące na innych funkcjach). Jest to cecha języków funkcyjnych[2].
Przypisy
- ↑ Aravinth 2017 ↓, s. 67.
- ↑ Caya 2019 ↓, s. 169.
Bibliografia
- Dean Wampler: Functional Programming for Java Developers. O’Reilly Media, 2011. ISBN 978-1-449-31103-2. (ang.).
- Andrew Caya: Szybsza sieć z językami PHP, MySQL i JavaScript. Gliwice: Grupa Wydawnicza Helion, 2019. ISBN 978-83-283-5521-7. OCLC 1121445728.