Функції конструктора, Детальна інформація

Функції конструктора
Тип документу: Реферат
Сторінок: 5
Предмет: Комп`ютерні науки
Автор: Олексій
Розмір: 8.1
Скачувань: 912
Реферат на тему:

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

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)

The online video editor trusted by teams to make professional video in minutes