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

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



НазваниеРеферат на тему: Функції конструктора
Дата конвертации22.01.2013
Размер69.68 Kb.
ТипРеферат



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

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



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)




Нажми чтобы узнать.

Похожие:

Реферат на тему: Функції конструктора iconРеферат на тему: Функції відбору ( car list), ( cdr list). Ці функції
Ці функції відбору (селекторні функції) є примітивними функціями, та були розглянуті раніше. Також було показано як утворити похідні...
Реферат на тему: Функції конструктора iconРеферат на тему: Функції модифікатора Функції модифікатора виконують переадресацію вказівників в структурах даних мови програмування Лісп. Rplaca
Відбувається заміна car-елемента об’єкта1 вказівником на об’єкт2, повертається модифікований об’єкт
Реферат на тему: Функції конструктора iconРеферат на тему: Функції рядків
Функції рядків призначені для роботи з текстами. Вони забезпечують виконання великої кількості операцій над текстовими данними —...
Реферат на тему: Функції конструктора iconРеферат на тему: Функції властивостей
Функції властивостей призначені для керування властивостями, пов’язаними із символами. Cdr елемент символа вказує на список властивостей,...
Реферат на тему: Функції конструктора iconРеферат на тему: Числові функції
Числові функції виконують основні математичні операції над цілими та дробовими числами. Користувач може обрати для роботи точну або...
Реферат на тему: Функції конструктора iconРеферат на тему: Числові функції
Числові функції виконують основні математичні операції над цілими та дробовими числами. Користувач може обрати для роботи точну або...
Реферат на тему: Функції конструктора iconРеферат на тему: Предмет, структура І функції економічної теорії предмет, структура І функції економічної теорії предмет економічної теорії
Хоча дитина і дорослий, шко­ляр і вчитель, студент і дипломований фахівець, фізик і економіст знають, що таке, наприклад, ціпа, гроші,...
Реферат на тему: Функції конструктора iconРеферат на тему: Функції планування
Часто map функціонал застосовується до одного аргумента списку, тобто fn є функцією одного аргумента: (mapx fn )
Реферат на тему: Функції конструктора iconРеферат на тему: Функції виводу Функції виводу передають результат в поточний поток виводу (cos current Output Stream)
Функції виводу передають результат в поточний поток виводу (cos current Output Stream)
Реферат на тему: Функції конструктора iconРеферат Слухач циклу Сливчук Оксана Юріївна
В основі хронічної серцевої недостатності лежить недостатність скоротливої функції міокарда. Головними причинами, які призводять...
Разместите кнопку на своём сайте:
Документы


База данных защищена авторским правом ©rushkolnik.ru 2000-2015
При копировании материала обязательно указание активной ссылки открытой для индексации.
обратиться к администрации
Документы