UkrReferat.com
найбільша колекція україномовних рефератів

Всього в базі: 75843
останнє поновлення: 2016-12-04
за 7 днів додано 15

Реферати на українській
Реферати на російській
Українські підручники

$ Робота на замовлення
Реклама на сайті
Зворотній зв'язок

 

ПОШУК:   

реферати, курсові, дипломні:

Українські рефератиРусские рефератыКниги
НазваФункції планування (реферат)
Авторdimich
РозділІнформатика, компютерні науки
ФорматWord Doc
Тип документуРеферат
Продивилось1447
Скачало334
Опис
ЗАКАЧКА
Замовити оригінальну роботу

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

 

Функції планування

 

Функції планування, або MAP - функції (mapping function) являють собою

важливий клас функцій в мові програмування Лісп. Їх навіть правильно

буде називати функціоналами, оскільки в якості аргументів вони приймають

інші функції. MAP - функціонали відображають список або послідовність у

нову послідовність, або породжують побічний ефект, який є повязаним з

цією послідовністю. Імена функцій планування починаються з MAP та їх

виклик має вигляд: (MAPx fn i1 i2 ... iN), де fn – функція від N

аргументів, i1, i2, ...,iN – списки. Часто MAP - функціонал

застосовується до одного аргумента - списку, тобто fn є функцією одного

аргумента: (MAPx fn <список>).

 

1. Повторення обчислення функції на елементах списка

 

(MAPCAR <функція> <список1> ... <списокN>)

 

Виконуються дії <функції> над CAR-елементами списків, потім над другими

елементами списків і так далі поки елементи хоча б у одному списку не

закінчаться. Для двох вхідних списків у Ліспі ця функція може бути

визначєна наступним чином:

 

(DEFUN MAPCAR2 (func lst1 lst2)

 

((OR (NULL lst1) (NULL lst2)) NIL)

 

(CONS (FUNCALL func (CAR lst1) (CAR lst2))

 

(MAPCAR2 func (CDR lst1) (CDR lst2))) )

 

Результатом функції є список, який побудовано з результатів виклику

функціонального аргумента MAPCAR.

 

$ (MAPCAR '+ '(1 2 3) '(7 8 9) '(10 11 12))

 

(18 21 24)

 

$ (MAPCAR 'cons '(1 2 3) '(a b c))

 

((1 . A) (2 . B) (3 . C))

 

$ (MAPCAR 'atom '(1 2 3 4))

 

(T T T T)

 

$ (MAPCAR '(lambda (x) (list x (* x x))) '(1 2 3))

 

((1 1) (2 4) (3 9))

 

2. Повторення обчислення функції на хвостових частинах списка

 

(MAPLIST <функція> <список1> ... <списокN>)

 

Функція MAPLIST на відміну від функції MAPCAR діє не над елементами

списків, а над їх хвостовими послідовностями. Тобто спочатку дії

виконуються над вхідними списками, потім – над їх CDR – елементами, і

так далі поки хоча б один зі списків не буде вичерпано. Для двох вхідних

списків у Ліспі ця функція може бути визначєна наступним чином:

 

(DEFUN MAPLIST2 (func lst1 lst2)

 

((OR (NULL lst1) (NULL lst2)) NIL)

 

(CONS (FUNCALL func lst1 lst2)

 

(MAPLIST2 func (CDR lst1) (CDR lst2))) )

 

$ (MAPLIST 'CONS '(1 2 3) '(10 11 12))

 

(((1 2 3) 10 11 12) ((2 3) 11 12) ((3) 12))

 

$ (MAPLIST 'REVERSE '(1 2 3 4))

 

((4 3 2 1) (4 3 2) (4 3) (4))

 

3. Об’єднуючі функції

 

(MAPCAN <функція> <список1> ... <списокN>)

 

(MAPCON <функція> <список1> ... <списокN>)

 

Функції MAPCAN та MAPCON є відповідно аналогами функцій MAPCAR та

MAPLIST, тільки вони не будують новий список з результатів

використовуючи функцію LIST, а зв’язують результати (які обов’язково

повинні бути списками), використовуючи функцію NCONC.

 

Об’єднуючі функції можна використовувати як фільтри. Під фільтром ми

будемо розуміти функцію, яка залишає або видаляє елементи, які

задовольняють певній умові. Наступний приклад показує, як можна зі

списку вилучити всі невід’ємні числа.

 

$ (MAPCAN '(LAMBDA (n) ((MINUSP n)(LIST n))) '(2 -3 3 4 -4 -5 5))

 

(-3 -4 -5)

 

Зазначимо, що наступні дії еквівалентні:

 

(MAPCAN f ‘(x1 x2 ... xN)) та (NCONC (f ‘x1) (f ‘x2) ... (f ‘xN))

-----> Page:

0 [1] [2] [3]

ЗАМОВИТИ ОРИГІНАЛЬНУ РОБОТУ