Реферат: Функції модифікатора
Функції модифікатора
Функції модифікатора виконують переадресацію вказівників в структурах даних мови програмування Лісп.
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))
(1 2 4 2 1)
6. NREVERSE < список > < об ’ єкт >. Обертає елементи списку, зчеплених з об’єктом.
$ (NREVERSE ‘(a b c d)) $ (NREVERSE ‘(1 2 3 (1 2 3) 4 5 6) ‘(1 2 3))
(d c b a) (6 5 4 (1 2 3) 3 2 1 1 2 3)
--> ЧИТАТЬ ПОЛНОСТЬЮ <--