Функциональное программирование
- Раздел 1. Зачем нужно функциональное программирование
- Тема 1. Особенности функцио нального стиля
- Раздел 2. Элементы языка Haskell
- Тема 1. Система программирования Haskell Platform
- Тема 2. Элемен тарные типы данных
- Тема 3. Определение функций с помощью уравнений
- Тема 4. Концевая рекурсия и накапливающие аргумен ты
- Тема 5. Техника работы со списками
- Раздел 3. Функции высших порядков
- Тема 1. Отображение и свертка. Лямбда-выражения
- Тема 2. Обработка списков с помощью функций высших порядков
- Раздел 4. Определение новых типов данных
- Тема 1. Определение типов данных
- Тема 2. Использование функций высших порядков при обработке сложных структур
- Раздел 5. Типы и классы
- Тема 1. Определение классов
- Тема 2. Вычисления с неопределенным результатом
- Раздел 6. Частичная параметризация функций
- Тема 1. Карринг
- Тема 2. Функцио нальное представление данных
- Тема 3. Позиционирование в списках
- Раздел 7. Ленивые вычисления
- Тема 1. Энергичная и ленивая схемы вычислений
- Тема 2. Бесконечные структуры данных
- Раздел 8. Функторы и монады
- Тема 1. Функторы
- Тема 2. Монады и последовательные вычисления
- Тема 3. Ввод-вывод. Компиляция программ на Haskell
- Раздел 9. Лямбда-исчисление
- Тема 1. Представление выражений в лямбда-исчислении
- Тема 2. Нормальная форма
- Тема 3. Слабая заголовочная нормальная форма
- Тема 4. Рекурсия в лямбда-исчислении
- Тема 5. Чистое лямбда-исчисление
- Раздел 10. Представление функциональных программ
- Тема 1. Расширенное лямбда-исчисление
- Тема 2. Представление программ в расширенном лямбда-исчислении
- Раздел 11. Интерпретация функциональной программы
- Тема 1. Eval/apply-интерпретатор Маккарти
- Раздел 12. SECD-машина и исполнение функциональных программ
- Тема 1. Архитектура SECD-машины
- Тема 2. Ленивая версия SECD-машины
- Тема 3. Компиляция функцио нальных программ в SECD-машину
- Раздел 13. Функцио наль ные эквиваленты императивных программ
- Тема 1. Абстрактный императивный язык программирования
- Тема 2. Императивная программа как функция
- Раздел 14. Графическое представление функциональных программ
- Тема 1. Графическое представление конструкций расширенного лямбда-исчисления
- Тема 2. Преобразование графов при исполнении программ
- Тема 3. Функции-проекторы и фиктивные узлы
- Раздел 15. Комбинаторная редукция
- Тема 1. Основные комбинаторы
- Тема 2. Абстрагирование от переменных
- Тема 3. Оптимизации Карри
- Тема 4. Сохранение аппликативных подвыражений при преобразованиях
- Раздел 16. Комбинаторная редукция на графах
- Тема 1. Правила преобразования графов для основных комбинаторов
- Тема 2. Представление рекурсивных функций при редукции на графах