Icon/Typy danych
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.