Реферат на тему:
Функції властивостей
Функції властивостей призначені для керування властивостями,
пов’язаними із символами. CDR – елемент символа вказує на список
властивостей, який містить властивості та прапорці (див. розділ ?????).
Список властивостей – це ASSOC-список (ASSOCiation) ключей
властивостей, об’єднаних у пари зі значеннями властивостей (див. Опис
ASSOC у розділі 4.1). Оскільки прапорці – це атоми у списку
властивостей, вони можуть відрізнятися від властивостей.
Функції властивостей та прапорців полегшують процес побудови динамічних
баз даних, з яких інформація може легко та швидко вибиратися.
Розглянемо, як можна працювати зі списком властивостей символа. Його
можна по необхідності створювати, обробляти та видаляти. Властивості
символа є глобальними, тобто доступними з довільної точки програми, поки
вони не будуть явно змінені чи видалені. Використання символа в якості
змінної чи імені функції не впливає на список властивостей.
Функції властивостей керують властивостями символів. CDR – елемент
символа вказує на список властивостей. Разом з функціями флагів вони
полегшують процес побудови динамічних баз даних.
1. (PUT ). У список властивостей
кладеться значення відповідно до вказівника .
(DEFUN PUT (SYM KEY OBJ)
((NULL (ASSOC KEY (CDR SYM)))
(RPLACD SYM (ACONS KEY OBJ (CDR SYM)))
OBJ)
(RPLACD (ASSOC KEY (CDR SYM)) OBJ)
OBJ)
$ (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
world world
2. (GET ). Повертає значення властивості, яке відповідає
відповідно до вказівника . Якщо такого вказівника не
існує, то повертається NIL.
(DEFUN GET (SYM KEY)
((NULL (ASSOC KEY (CDR SYM))) NIL)
(CDR (ASSOC KEY (CDR SYM))) )
Якщо змінна capital має властивості, які їй були надані у попередньому
прикладі, то:
$ (GET ‘capital ‘england) $ (GET ‘capital ‘germany)
london bonn
3. (REMPROP ). Видалення зі списка властивостей
властивості, яка відповідає . Повертається старе значення
властивості, якщо воно знайдено, та NIL – інакше.
(DEFUN REMPROP (SYM KEY)
((ATOM (CDR SYM)) NIL)
((EQUAL (CAADR SYM) KEY)
(SETQ KEY (CDADR SYM))
(RPLACD SYM (CDDR SYM))
KEY )
(REMPROP (CDR SYM) KEY) )
Нехай символ capital має три попередні властивості.
(REMPROP ‘capital ‘germany)
bonn
(REMPROP ‘capital ‘usa)
washington
(CDR ‘capital)
((england . london))
4.2. Функції розпізнання
Функції розпізнання — це твердження, які використовуються для
розпізнання або ідентифікації об’єктів даних muLisp. Ці функції мають
тільки один аргумент, а повертають булеве значення. Вони розпізнають
об’єкт, який може мати довільну структуру. Ми вже розглянули деякі
функції розпізнання: SYMBOLP, INTEGERP, NUMBERP, ATOM, LISTP, NULL.
Розглянемо інші.
(ZEROP obj). Повертає Т, якщо obj — число 0.
(PLUSP obj). Повертає Т, якщо obj — додатне ціле число.
(MINUSP obj). Повертає Т, якщо obj — від’ємне ціле число.
(ODDP obj). Повертає Т, якщо obj — непарне ціле число.
(EVENP obj). Повертає Т, якщо obj — парне ціле число.
Функція (ASCII sym) повертає ASCII-код символа sym. Функція (ASCII num)
повертає символ, ASCII код якого дорівнює числу num. Для того, щоб
визначити, чи є символ sym літерою, можна використати функцію:
() – повертає T, якщо
(NUMERIC-CHAR-P
(ALPHANUMERICP
$ (ALPHA-CHAR-P W) $ (ALPHA-CHAR-P \3) $ (ALPHA-CHAR-P ~)
T NIL NIL
$ (NUMERIC-CHAR-P W) $ (NUMERIC-CHAR-P \3)
NIL T
$ (NUMERIC-CHAR-P ~) $ (ALPHANUMERICP W)
NIL T
$ (ALPHANUMERICP \3) $ (ALPHANUMERICP ~)
T NIL
Зазначимо, що символ проміжку (‘ ‘ ) є літерою.
Нашли опечатку? Выделите и нажмите CTRL+Enter