Numarul de tipuri de valori se poate extinde (si probabail ca in versiuni viitoare se va intampla acest lucru) prin adaugarea unor proceduri pentru copierea, duplicarea, stergerea, alocarea implicita a unei valori de un anumit tip; se va avea in vedere pe viitor crearea unor valori de tip: data opaca (sir de octeti), fisier text, fisier binar, socketuri, entitati IPC (comunicare intre procese).
Variabilele au asociata o anumita valoare; mai multe variabile pot sa refere aceeasi valoare, si cand i se schimba valoarea la una, aceasta se va
reflecta si in cealalta; de asemenea ``variabilele'' in sensul identificatorilor programului pot sa-si imparta aceeasi valoare; tot asa, valorile
functii pot sa nu fie injective.
Tipul unei variabile este de fapt un pointer la o secventa de operatii (interfata) cheie; tipul unei variabile este de fapt o cheie pentru
tipul ei; operatiile care trebuiesc implementate pentru ai definii tipul sunt cuprinse intr-o structura de pointeri la functii:
[first=29,last=41]plint/data/variable.h
Indiferent de valoarea ei, motorul tipului variabilei poate face orice in aceste functii.
Tipurile de mai sus se regasesc definite (``typedef''d) in fisieruldata/types.h:
[first=29,last=49]plint/data/types.h
Fie ca e valoare sau variabila, o data are alocata o memorie dinamica; cum s-a spus mai sus aceste date pot fi folosite de mai multe alte date deodata. Prin urmare, s-a prevazut un mecanism de numarare a referintelor la date (``reference counting''). O data se elibereaza numai cand contorul de referinte ajunge la 0. Duplicarea unei date inseamna incrementarea numarului de referinte. Eliberarea unei date inseamna decrementarea numarului de referinte. Copierea unei date inseamna returnarea unei noi date alocate, care sa fie ``copia'' fidela a unei date initiale; notiunea de fidel este interpretabila.
Definirea tipurilor valorilor trebuie sa prevada operatii de conversie la alte tipuri (cu valori implicite daca nu se poate converti), de comparare, de specificare a lungimii (abstract), de incrementare si decrementare (abstract).
Avand in vedere ca printr-o valoare se poate ajunge la alte variabile si ca valorile sunt alocate dinamic, rezulta ca ele pot fi vazut ca memorii pentru variabile.
Urmatoarele trei sectiuni abordeaza cele trei personalitati ale valorilor: domenii, functii, memorii.
Mai intai insa, se va vorbi putin despre numararea referintelor.