Реферат

Реферат Функції конструктора

Работа добавлена на сайт bukvasha.net: 2015-10-28

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 22.11.2024


Реферат на тему:

Функції конструктора

muLISP-програми можуть автоматично генерувати нові структури даних, використовуючи функції конструктора. Ці функції можуть утворювати бінарні дерева або зв’язні списки, які моделюють структури даних практично для довільної задачі.

1. (CONS object list). Ця функція конструктора є примітивною функцією та була розглянута раніше у параграфі 2.2.

2. (ACONS key object alist). Утворює пару (ключ . обьект), розташовує її на початку асоциативного списку alist та повертає результуючий асоциативний список. ACONS спрощує процес утворення асоциативних списків.

(DEFUN ACONS (KEY OBJ ALIST)

(CONS (CONS KEY OBJ) ALIST) )

$ (ACONS 'EYES 'BLUE '((WEIGTH . 170) (HEIGTH . 72)))

((EYES . BLUE) (WEIGTH . 170) (HEIGTH . 72))

3. (LIST object1 object2 ... objectn). Утворює та видає список, який складається з елементів від обєкта object1 по обєкт objectn. Якщо функція викликана без аргументів, то LIST повертає ознаку NIL. LIST може працювати з будь-якою кількістю аргументів.

(DEFUN LIST LST

((NULL LST) NIL)

(CONS (CAR LST) (APPLY 'LIST (CDR LST))) )

$ (LIST 'A 'B 'C 'D) $ (LIST 'A '(B C) 'D)

(A B C D) (A (B C) D)

$ (LIST)

NIL

4. (LIST* object1 object2 ... objectn). Повязує у пару обєкти object1, object2, ... та objectn і видає результуючий обєкт. Якщо функція викликається з єдиним аргументом, LIST* повертає цей аргумент.

(DEFUN LIST* LST

((NULL LST) NIL)

((NULL (CDR LST))

(CAR LST) )

(CONS (CAR LST) (APPLY 'LIST* (CDR LST))) )

$ (LIST* 'A 'B 'C 'D) $ (LIST* 'A 'B '(C D))

(A B C . D) (A B C D)

$ (LIST* 'DOG)

DOG

5. (APPEND list1 list2 ... listn). Утворює та повертає список, який складається з елементів списків, починаючи зі списку list1 та по список listn. APPEND копіює cons-и верхнього рівня кожного зі своїх аргументів, окрім останнього. Якщо функція викликається з єдиним аргументом, APPEND повертає цей аргумент без його копіювання. Отже, для копіювання списку краще використовувати COPY-LIST, ніж APPEND.

Відмітимо, що якщо APPEND та NCONC, о якій буде сказано далі, мають однакові аргументи, вони повертають, як правило, одинакові списки. Але APPEND використовує cons-и для копіювання усіх, окрім останнього, аргументів, тоді як NCONC фактично модифікує усі аргументи, окрім останнього.

(DEFUN APPEND (LST1 LST2)

((ATOM LST1) LST2)

(CONS (CAR LST1) (APPEND (CDR LST1) LST2)) )

$ (SETQ FOO '(D E F))

(D E F)

$ (APPEND '(A B C) FOO '(G H I)) $ (APPEND '(I U) 'T 'R 'E '(O I))

(A B C D E F G H I) (I U O I)

$ FOO $ (APPEND '(A B C D) 'E 'F 'G)

(D E F) (A B C D . G)

6. (COPY-LIST list). Копіює cons-и верхнього рівня списку list та повертає список, еквівалентний (тобто рівний – EQUAL) списку list.

(DEFUN COPY-LIST (LST)

((ATOM LST) LST)

(CONS (CAR LST) (COPY-LIST (CDR LST))) )

$ (COPY-LIST '(A B (C . D) E)) $ (COPY-LIST '(A B C . D))

(A B (C . D) E) (A B C . D)

7. (COPY-TREE object). Копіює cons-и верхнього рівня обєкту object та повертає обєкт, еквівалентний object.

(DEFUN COPY-TREE (OBJ)

((ATOM OBJ) OBJ)

(CONS (COPY-TREE (CAR OBJ)) (COPY-TREE (CDR OBJ))) )

$ (COPY-TREE '(A B (C . D) E)) $ (COPY-TREE '(A B C . D))

(A B (C . D) E) (A B C . D)

8. (FIRSTN n list). Якщо n - додатне ціле, функція копіює та повертає перші n елементів списку. FIRSTN повертає NIL, якщо n - недодатне ціле. Якщо список має n або більше елементів, FIRSTN копіює та повертає елементи списку.

(DEFUN FIRSTN (N LST)

((AND (INTEGERP N) (PLUSP N))

((ATOM LST) NIL)

(CONS (CAR LST) (FIRSTN (SUB1 N) (CDR LST))) ) )

$ (FIRSTN 0 '(SUE JOE ANN BOB)) $ (FIRSTN 2 '(A B . C))

NIL (A B)

$ (FIRSTN 2 '(SUE JOE ANN BOB)) $ (FIRSTN 3 '(A B . C))

(SUE JOE) (A B)

$ (FIRSTN 4 '(SUE JOE ANN BOB))

(SUE JOE ANN BOB)

$ (FIRSTN 5 '(SUE JOE ANN BOB))

(SUE JOE ANN BOB)

9. (BUTLAST list n). Якщо n - ноль або додатне ціле, функція копіює та повертає усе, окрім n останніх елементів списку list. Якщо n пропущено чи рівне нулю, чи не є додатним цілим, BUTLAST копіює та повертає усе, окрім останнього, елементи списку.

(DEFUN BUTLAST (LST N)

((AND (INTEGERP N) (>=N 0))

(FIRST (-(LENGTH LST) N) LST) )

(BUTLAST LST 1) )

$ (BUTLAST '(A B C D)) $ (BUTLAST '(A B C D) 2)

(A B C) (A B)

10. (REMOVE item list test). Повртає копію списку list з усіма елементами, окрім тих, які при перевірці за тестом test мають ознаку не NIL та видаляються (тобто (test item element) не дорівнює NIL).

Якщо тест-аргумент дорівнює NIL або не задан, REMOVE використовує EQL-тест.

(REMOVE-IF test list). Повртає копію списку list з усіма елементами, окрім тих, які при перевірці за тестом test мають ознаку не NIL та видаляються.

(DTFUN REMOVE (ITEM LST TEST)

((ATOM LST) LST)

( ((NULL TEST)

(SETQ TEST 'EQL) ) )

(LET ( (COPY (REMOVE ITEM (CDR LST) TEST)) )

((FUNCALL TEST ITEM (CAR LST)) COPY)

((EQ COPY LST) LST)

(CONS (CAR LST) COPY) ) )

$ (REMOVE '(2 5) '((5 2) (2 5) (2 3)) 'EQUAL)

((5 2) (2 3))

$ (REMOVE-IF 'MINUSP '(-2 0 7 -0.1 3))

(0 7 3)

11. (REVERSE list object). Утворює та видає список, який складається з елементів списку list, але в оберненому порядку. Функція видає елементи списку в оберненому порядку, приєднані до обєкту object. Результат є таким, як і при роботі функції (APPEND (REVERSE list) object), але виклик REVERSE в якості другого аргумента є більш ефективним.

(DEFUN REVERSE (LST OBJ)

((ATOM LST) OBJ)

(REVERSE (CDR LST) (CONS (CAR LST) OBJ))) )

$ (REVERSE '(A B C D E))

(F D C B A)

$ (REVERSE '(A B C) '(D E F)) $ (REVERSE '(A B C) 'D)

(C B A D E F) (C B A . D)

12. (SUBSTITUTE new old list test). Повертає копію високого рівня списку list, замінюючи на нові new елементи ті старі old елементи списку, для яких ознака перевірки за тестом test не дорівнює не NIL. Якщо тест-аргумент дорівнює NIL або не задан, SUBSTITUTE використовує EQL-тест.

(SUBSTITUTE-IF new test list). Повертає копію високого рівня списку list, замінюючи на нові new елементи усі елементи списку, для яких ознака перевірки за тестом не є NIL.

(DEFUN SUBSTITUTE (NEW OLD LST TEST)

((ATOM LST) LST)

( (NULL TEST)

(SETQ TEST 'EQL) ) )

((FUNCALL TEST OLD (CAR LST))

(CONS NEW (SUBSTITUTE NEW OLD (CDR LST) TEST)) )

((SETQ NEW (SUBSTITUTE NEW OLD (CDR LST) TEST))

((EQ NEW (CDR LST)) LST)

(CONS (CAR LST) NEW) )

$ (SUBSTITUTE 5 2 '(4 2 (3 . 2) 4))

(4 5 (3 . 2) 4)

$ (SUBSTITUTE 'CANNIBALS 'NOUN '(NOUN LIKE TO EAT NOUN) )

(CANNIBALS LIKE TO EAT CANNIBALS)

13. (SUBST new old object test). Повертає копію обєкта object, замінюючи на нові new усі старі old підвирази обєкта, для яких ознака перевірки за тестом test не дорівнює NIL. Якщо тест-аргумент дорівнює NIL або не задан, SUBST використовує EQL-тест.

(SUBST-IF new test object). Повертає копію високого рівня обєкта object, замінюючи на нові new елементи усі підвирази обєкта, для яких ознака перевірки за тестом не є NIL.

(DEFUN SUBST (NEW OLD OBJ TEST)

( (NULL TEST)

(SETQ TEST 'EQL) ) )

((FUNCALL TEST OLD OBJ) NEW)

((ATOM OBJ) OBJ)

(LET ( (LEFT (SUBST NEW OLD (CAR OBJ) TEST))

(RIGHT (SUBST NEW OLD (CDR OBJ) TEST)) )

((AND (EQ LEFT (CAR OBJ)) (EQ RIGHT (CDR OBJ)))

OBJ )

(CONS LEFT RIGHT) ) )

$ (SUBST 5 2 '(4 2 (3 . 2) 4))

(4 5 (3 . 5) 4)


1. Лекция Курс лекций по Деньгам, кредитам, банки
2. Курсовая на тему Модернизация механизма отклонения иглы швейного полуавтомата 1095 класса
3. Реферат на тему Творчество и креативность как факторы сработанности сотрудников
4. Курсовая Петрографическое описание миаскитов сиенитов Вишневогорского массива
5. Реферат на тему Short Story About King Arthur Essay Research
6. Реферат Сущность и задачи бухгалтерского учета в банках
7. Реферат Респіраторна кома Етіологія Клініка патогенез Невідкладна допомога
8. Реферат на тему Природные туристские ресурсы Австралии и Океании
9. Сочинение на тему Основные этапы научной биографии Е Д Поливанова
10. Диплом на тему Розробка двохсмугової активної акустичної системи з сабвуфером