Зворотний зв'язок

Функції модифікатора

Функції модифікатора виконують переадресацію вказівників в структурах даних мови програмування Лісп.

1. RPLACA <об’єкт1> <об’єкт2>.

Відбувається заміна CAR-елемента об’єкта1 вказівником на об’єкт2, повертається модифікований об’єкт.

Якщо об’єкт1 — список, то перший елемент списка замінюється на об’єкт2.

Якщо об’єкт1 — бінарне дерево, то його лівий син замінюється на об’єкт2.

Якщо об’єкт1 — символ (aле не NIL), то символ приймає значення об’єкт2.

$ (SETQ a ‘(a b c d))$ (SETQ b ‘((1 . 2) . (3 . 4)))$ (SETQ s ‘d)

$ (RPLACA a ‘(11 12))$ (RPLACA b 5)$ (RPLACA s ‘g)

((11 12) b c d)(5 . (3 . 4))Val(s)=d,Val(d) = g

2. RPLACD <об’єкт1> <об’єкт2>. Відбувається заміна CDR-елемента об’єкта1 вказівником на об’єкт2, повертається модифікований об’єкт. RPLACA та RPLACD є основними функціями, які змінюють фізичну структуру списків. Їх можна представити через узагальнену функцію присвоєння SETF:

(RPLACA x y)– це (SETF (CAR x) y)

(RPLACD x y)– це (SETF (CDR x) y)

3. NSUBSTITUTE <новий><старий> <список> <тест>. Модифікуються конси найвищого рівня списку. Старі елементи замінюються на нові на нульовому рівні вкладеності, для яких перевірка по тесту не дорівнює NIL. Якщо тест не вказано, то по замовченню тест = EQL.

$ (NSUBSTITUTE 1 3 ‘(4 5 6 (3 3 4 5) 3 4 1))

(4 5 6 (3 3 4 5) 1 4 1)

$ (NSUBSTITUTE 10 5 ‘(4 5 6 3 4 1) >)

(10 5 6 10 10 10)

$ (NSUBSTITUTE 10 5 ‘(4 5 6 3 4 1) <)

(4 5 10 3 4 1)

4. NSUBST <новий><старий> <список> <тест>. Функція працює як і NSUBSTITUTE, але модифікуються конси всіх рівнів списку.

$ (NSUBST 1 3 ‘(4 5 6 (3 3 4 5) 3 4 1))

(4 5 6 (1 1 4 5) 1 4 1)

5. DELETE <елемент> <список> <тест>. Вилучає зі списку всі елементи, для яких ознака перевірки за тестом не дорівнює NIL.

$ (DELETE 3 ‘(1 2 3 4 3 2 1))


Реферати!

У нас ви зможете знайти і ознайомитися з рефератами на будь-яку тему.







Не знайшли потрібний реферат ?

Замовте написання реферату на потрібну Вам тему

Замовити реферат