- •1. Парадигмы императивного и декларативного программирования.
- •2. Основные задачи для функционального и логического программирования.
- •3. Основные понятия систем ии.
- •4. Понятие функционального программирования и основные положения по а.П. Ершову.
- •5. Понятие функциональности.
- •14. Префиксная нотация Лиспа, вычисление арифметических выражений.
- •15. Понятие псевдофункции.
- •16. Псевдофункция статического связывания объекта.
- •10. Свойства функционального программирования в постановке а. П. Ершова.
- •11. Структура символьного выражения в Лиспе.
- •12. Символы, атомы, константы, t, nil, списки.
- •13. Список как основная структура функционального и логического программирования.
- •21. Основные примитивы Лиспа для обработки списка.
- •22. Графическое представление списка.
- •23. Принципы работы с памятью функциональной и логической программы
- •24. Автоматические сборщики мусора
- •25. Старт-стопные сборщики мусора и сборщики мусора реального времени
- •Ключевой параметр optional, key, res.
- •33. Карринговая форма записи функций нескольких переменных.
- •48. Функция принадлежности аргумента списка, декларативное определение
- •56. Генератор в программировании, понятие вычислительного контекста
- •57. Связь дисциплины логического программирования с дисциплиной "базы данных"
- •65. Резолюция, правило резолюции как процедура вывода решений
- •66. Сопоставление в логическом программировании
- •81. Оператор присваивания в прологе
- •82. Детерминированные и недетерминированные предикаты
- •83. Отсечение, операционная модель Пролога в случае применения отсечения.
- •88. Рекурсивное логическое программирование
- •105. Металогические предикаты
- •106. Металогические предикаты для анализа структуры термы
- •107. Металогические предикаты для определения типа переменных
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. Генератор в программировании, понятие вычислительного контекста
Генератором называется функциональный объект, каждый вызов которого порождает очередное значение некоторого ряда. Выражение, которое должно заменять связанную переменную в специальной структуре данных, называется вычислительным контекстом.
