Функциональное программирование Лектор: Евгений Кирпичёв #fp@proglib Курс знакомит слушателей с функциональным подходом к программированию, все более набирающим силу в последнее время. Ключевые свойства этого подхода - борьба со сложностью программ через использование мощных механизмов абстракции и акцент на важность математических свойств программ. Курс в значительной мере основан на знаменитейшем курсе и книге "Структура и интерпретация компьютерных программ" из MIT, однако адаптирован под ряд особенностей современного программирования и профессиональную подготовку слушателей: обсуждаемые идеи иллюстрируются как в "чистом" виде, так и в контексте типичных повседневных задач. В курсе рассматриваются следующие наиболее важные идеи из мира функционального программирования: лямбда-исчисление, рекурсивные и итеративные процессы, функции высшего порядка и замыкания, абстрактные типы данных, свёртки (данная тема особенно важна в контексте параллельного и распределенного программирования), мини-языки, модель окружений, а также дается введение в системы типов. 1. Язык Scheme. Рекурсия и хвостовые вызовы 2. Замыкания и функций высшего порядка 3. Абстракция данных 4. Свертки 5. Моноиды 6. DSL: Упрощалка выражений 7. Изменяемое состояние и модель окружений 8. Системы типов