Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
flp.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
207 Кб
Скачать
☆

48. Функция принадлежности аргумента списка, декларативное определение

Принадлежность элемента списку определяется в XLISP предикатом member. Для декларативного описания задачи принадлежности элемента списку введем следующие правила:

 Правило первое: пустому списку элемент не принадлежит.

 Правило второе: если элемент совпадает с головой списка, то он принадлежит списку.

 Правило третье: если элемент не совпадает с головой списка, то необходимо проверить хвост списка.

49. Эффективность рекурсивного и итерационного процесса.

В итерационном варианте объем потребляемой вычислительным процессом памяти остается постоянным на протяжении всего вычислительного процесса. В рекурсивном варианте объем потребляемой вычислительным процессом памяти увеличивается на протяжении всего этапа порождения рекурсивных вызовов.

50. Хвостовая рекурсия

Хвостовая рекурсия представляет собой специальный вид рекурсии, в которой имеется единственный вызов рекурсивной функции, выполняющийся после всех вычислений.

51. Понятие функции высокого порядка

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

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

52. Применяющий функционал Лиспа

В Лиспе переданный функции в качестве параметра функциональный объект можно использовать только через явный вызов специальных функций, называемых применяющими функционалами. к применяющим функционалам относятся функции APPLY и FUNCALL.

53. Обобщение вычислений посредством использования функций высокого порядка

(apply funcarg 'ListFuncarg)

(funcall funarg arg1 arg2 ... argn)

>(+ 5 3)

>(apply '+ '(5 3))

>(funcall '+ 5 3)

Функции высокого порядка не обладают преимуществом эффективности и выразительности

>(defun fav (f a1 a2) (funcall f a1 a2))

>(fav 'cons 'a '(b c))

(a b c)

>(fav '+ 3 4)

54. Отображающие функционалы

Это класс функций высокого порядка, называющийся map-функции (map-func), которые определенным образом отображают конкретный элемент списка.

Функционалы MAPCAR и MAPLIST используются для программирования циклов специального вида и в определении других функций.

55. Понятие лексического замыкания, формы организации лексического замыкания

Лексическим замыканием (closure) называется функциональный объект, состоящий из функции и контекста. создается формой FUNCTION. Отметим, что в замыкании из всего контекста определения функции включаются только связи свободных переменных. Если в функции нет свободных переменных, то форма FUNCTION эквивалентна форме QUOTE.

>(setq x 'a)

>(setq w (function (lamda (y) (cons x y))))

Лексическое замыкание - функциональный объект

>(w nil)

(A)

56. Генератор в программировании, понятие вычислительного контекста

Генератором называется функциональный объект, каждый вызов которого порождает очередное значение некоторого ряда. Выражение, которое должно заменять связанную переменную в специальной структуре данных, называется вычислительным контекстом.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]