Icon/Typy danych

Z Wikibooks, biblioteki wolnych podręczników.

Język Icon jest językiem beztypowym. To lakoniczne stwierdzenie oznacza tyle, że każdej zmiennej (a w zasadzie prawidłowiej należałoby mówić, że każdemu identyfikatorowi) można przypisać wartość dowolnego typu, nawet wówczas, gdy wcześniej tej samej zmiennej przypisano wartość innego typu (a tym samym z danym identyfikatorem został wcześniej związany inny typ). To podejście znaczenie odbiega od większości rozwiązań występujących w najpopularniejszych językach programowania (jak choćby C czy Pascal), w których zmienna (pewien identyfikator) zostaje na wczesnym etapie kompilacji związany z określonym typem danych. Icon należy więc do kategorii języków z wiązaniem dynamicznym typów danych, wykonywanym w trakcie przebiegu programu.

W Iconie istnieje 10 predefiniowanych typów danych. Impelementacja WinIcon rozszerza pojęcie typu. Każdy typ, lub grupa typu ma swój oznacznik literowy:

lp. ICON WINICON
nazwa oznacznik literowy polska nazwa nazwa oznacznik literowy polska nazwa
1. co-expresion e współwyrażenie co-expresion C współwyrażenie
2. cset c zbiór znaków cset c zbiór znaków
3. file f plik file f plik
4. integer i całkowity integer i całkowity
5. list a lista list L lista
6. null u pusty null n pusty
7. procedure p proceduralny procedure p proceduralny
8. real r rzeczywisty real r rzeczywisty
9. string s łańcuch znaków string s łańcuch znaków
10. table t tabela table T tabela
11. record types R typy rekordowe
12. set S zbiory
13. any type x dowolny typ
14. numeric N typy numeryczne

(i | r)

15. any structure type X dowolny typ strukturalny

(L | R | S | T)

16. field of record F pole rekordu


Oprócz standardowych w.w. typów danych, każda deklaracja rekordu wprowadza nowy typ danych, o nazwie zgodnej z nazwą rekordu podaną w deklaracji, np.

 record complex(Re,Im)

deklaruje nowy typ danych – complex.

Typ danej wynika:

  • z samego zapisu danej w przypadku literałów, zgodnie z opisem zawartym w rozdziale Kod źródłowy,
  • z wiązania typu z identyfikatorem dokonywanego dynamicznie w trakcie wykonywania programu, podczas wykonywania operacji przypisania.