Реферат на тему:
Функції модифікатора
Функції модифікатора виконують переадресацію вказівників в структурах даних мови програмування Лісп.
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)
7. NBUTLAST < список > <n>. Якщо n — нульабододатнеціле, тофункція NBUTLAST повертаєсписокбез n останніхелементів (відбуваєтьсязаміна n-гоконса, взятогозкінцяспискуна NIL). Якщо другий аргумент не вказано, то за замовченням n=1.
$ (NBUTLAST ‘(a b c d e)) $ (NBUTLAST ‘(a b c d e) 3)
(a b c d) (a b)
8. NCONC <список1> <список2> ... <списокN>. Повертається список, який складається з елементів списків — аргументів у вказаному порядку. Відбувається модифікація останніх CDR-елементів списків. Якщо виконати команду (NCONC list list), де list — будь-який список, то результатом буде циркулянтний список, процес побудови якого буде нескінченним.
$ (NCONC ‘(1 2) ‘(3 4) ‘(5 6 7))
(1 2 3 4 5 6 7)
9. SPLIT < список >. Розбиває список на два списки посередині. Значенням списку стає його перша половина. Функція SPLIT повертає другу половину списку.
$ (SETQ a ‘(1 2 3 4 5 6)) $ a
$ (SPLIT a) (1 2 3)
(4 5 6)
10. SORT <список> <тест>. Сортуються елементи списку на основі тесту.
$ (SORT ‘(2 5 3 4 1 6 8 9 7) >)
(9 8 7 6 5 4 3 2 1)
4.7. Функції рядків
Функції рядків призначені для роботи з текстами. Вони забезпечують виконання великої кількості операцій над текстовими данними — порівняння, пошуку та перетворення P - імен символів та чисел. P - ім’я числа змінюється у відповідності до поточної системи числення (значення змінної *PRINT-BASE*).
1. UNPACK <atom>. Повертає список символів, P - імена кожного з яких складаються з друкованих символів атома <atom>. Якщо <atom> не є атомом, то повертається NIL.
(DEFUN UNPACK (ATM)
((SYMBOLP ATM) (список символів, P - імена яких складаються з друкованих символів атома ATM) )
((NUMBERP ATM) (список символів, P - імена яких складаються з цифр атома ATM) ) )
$ (UNPACK ‘abcde) $ (UNPACK 216) $ (SETQ *PRINT-BASE 16*)
(a b c d e) (2 1 6) $ (UNPACK 216)
( D 8)
2. PACK <list>. Повертає символ, P - ім’я якого складіється зі счеплених P - імен атомів у списку <list>. Для визначення P - імен чисел використову- ється поточна система числення. Функція PACK завжди повертає символ, навіть якщо P - ім‘я складається тільки з однозначних чисел.
(DEFUN PACK (LST)
((ATOM LST) "")
((SYMBOLP (CAR LST)) (символ, P - ім’яякогоскладаєтьсяз P - імені (CAR LST) , сполученез (PACK (CDR LST))) )
((NUMBERP (CAR LST)) (символ, P - ім’яякогоскладаєтьсязцифрудрукованомупредставлені (CAR LST), сполученез (PACK (CDR LST))) )
(PACK (CDR LST)) )
$ (PACK ‘(a b c d e) $ (PACK ‘(7 3 1) $ (PACK ‘(Q 7 A 1))
abcde |731| Q7A1
$ (PACK ‘(23 56) $ (PACK '("" 3 ||))
|2356| 3
3. PACK* <atom1> ... <atomN>. П
Одними из наиболее популярных услуг на рынке IT-технологий являются создание и продвижение лендингов. Они способны положительно влиять на деятельность любого бизнес-проекта в интернете. Судя по многочисленным отзывам, заказавшие создание лендингов люди ни разу не пожалели о потраченных деньгах. Они вложили в будущее, которое неразрывно связано с интернетом. Всё больше и больше предпринимателей обращаются к услугам разных агентств, веб-студий, чтобы заказать создание лендинга у профессионалов.