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

Bibliografia

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.