Примітивні об’єкти даних
Функції властивостей
Розглянемо, як можна працювати зі списком властивостей символа. Його можна по необхідності створювати, обробляти та видаляти. Властивості символа є глобальними, тобто доступними з довільної точки програми, поки вони не будуть явно змінені чи видалені. Використання символа в якості змінної чи імені функції не впливає на список властивостей.
Функції властивостей керують властивостями символів. CDR - елемент символа вказує на список властивостей. Разом з функціями флагів вони полегшують процес побудови динамічних баз даних.
1. (PUT символ ключ об’єкт). У список властивостей <символа> кладеться значення об’єкта відповідно до вказівника ключ.
$ (PUT ‘capital ‘usa ‘washington)$ (SETQ capital ‘world)
$ (PUT ‘capital ‘germany ‘bonn)$ (PUT ‘world ‘ocean ‘atlantic)
$ (PUT ‘capital ‘england ‘london)
$ (CDR ‘capital)
((ENGLAND . LONDON) (GERMANY . BONN) (USA . WASHINGTON))
$ (CDR capital)
((ocean . atlantic))
$ (CAR ‘capital)$ capital
worldworld
2. (GET символ ключ). Повертає значення властивості, яке відповідає символу відповідно до вказівника ключ. Якщо такого вказівника не існує, то повертається NIL. Якщо змінна capital має властивості, які їй були надані у попередньому прикладі, то:
$ (GET ‘capital ‘england)$ (GET 'capital 'germany)
london bonn
3. (REMPROP символ ключ). Видалення зі списка властивостей символа властивості, яка відповідає ключу. Повертається старе значення властивості, якщо воно знайдено, та NIL – інакше. Нехай символ capital має три попередні властивості.
(REMPROP ‘capital ‘germany)
bonn
(REMPROP ‘capital ‘usa)
washington
(CDR ‘capital)
((england . london))