1. Функциональное программирование. Основы Лиспа Содержание1. Функциональное программирование. Основы Лиспа. Особенности функционального программирования1) Природа данных2) Самоописание обработки символьных выражений3) Подобие машинным языкамОсновные понятияСистема программированияИстинностные значенияТип данныхОбщее представление о языке ЛиспКроме функций-констант вполне допустимы функции-переменныеИнтегральность ограничений на пространственно-временные характеристикиУточняемость решенийДинамическое управление вычислениями и конструированием программ2. Списки в Лиспе Списки. Функции для работы со спискамиCAR обеспечивает доступ к первому элементу списка — его "голове".EQ выполняет проверку атомарныхМногократные CAR-CDRУправляющие структуры (предложения)Простая рекурсияДругие виды рекурсии3. Функционалы Функционалы и отображенияПрименяющие функционалыФункционал APPLY Предположим мы хотим объединить в один список несколько вложенных списков, т.е. изПример: Определим функцию, которая рассчитывает среднее списка чиселЧасто apply используют вместе c марсаr.Можно определить более сложную функцию countatom, которая считает элементы-атомы в любом списке.Функционал FUNCALLЗдесь fn - функция с n aргументами.Эта функция имеет видВстроенные функционалыЛямбда выраженияКомпозиции функционалов, фильтры, редукцииСцепление результатов отображенияФильтр отличается от обычного отображения тем, что окончательно собирает не все результатыВыводы по применимости функционалов