- Сравнение императивного и декларативного подходов к программированию. Примеры языков.
- Функциональное программирование. Основные особенности.
- История ФП. Возникновение. Семейства языков.
- Чистые функции. Особенности программирования на чистых функциях. Функции высших порядков. Каррирование.
- Ленивая и энергичная (строгая) стратегии исполнения. Разновидности и примеры.
- Язык Haskell. Синтаксис объявления и определения функций и переменных. Встроенные выражения. Префиксная и инфиксная запись.
- Язык Haskell. Приоритет и ассоциативность операций. Каррирование и секции.
- Язык Haskell. Встроенные типы данных.
- Язык Haskell. Пользовательские типы данных.
- Язык Haskell. Pattern matching.
- Функциональные комбинаторы. Назначение и примеры. ФК над списками и функциями.
- Функциональные комбинаторы. Назначение и примеры. Свёртки.
- Классы типов в Haskell. Определение и примеры.
- Классы типов в Haskell. Моноиды и функторы
- Классы типов в Haskell. Монады.
- Монады Reader, Writer, State.
- Монады-трансформеры.
- Хвостовая рекурсия.
- Линзы в Haskell. Основные определения.
- Линзы в Haskell. Композиция линз. Законы линз.
- Traversal в Haskell. Связь с линзами. Законы.
- Язык Erlang. Основные концепции и конструкции языка.
- Язык Erlang. Модель акторов. Особенности ее реализации в Erlang.
- ФП в Java. Функции и лямбды.
- ФП в Java. Каррирование и монады.
- ФП в Java. Плюсы и минусы имеющейся реализации.
- Амортизированная сложность алгоритмов. Метод банкира.
- Амортизированная сложность алгоритмов. Метод физика.
- Изменяемые/неизменяемые структуры данных. Персистентное/эфемерное применение СД.
- Функциональные структуры данных: очередь и zipper.
- Функциональные структуры данных: деревья поиска.
- Функциональные структуры данных: кучи.
- Функциональные структуры данных: случайные структуры данных.
- Функциональные структуры данных: хеш-деревья.
- Метод расписаний (Scheduling) и его применение к функциональным структурам данных.
- Ленивое выполнение. Особенности ленивых алгоритмов.
- Ленивое выполнение. Работа со списками в ленивом языке.
- Ленивое выполнение. Потоки.
- Ленивое выполнение. Сильносвязные структуры данных: двусвязные списки и деревья.
- Изоморфизм Карри-Говарда. Базовые элементы логики на основе типов.
- Изоморфизм Карри-Говарда. Система доказательств и исчисление комбинаторов.
- Изоморфизм Карри-Говарда. Проблемы и применение.
Обновлено: 30.12.2017 11:59