Skip to content

Latest commit

 

History

History
283 lines (261 loc) · 10.4 KB

plan.md

File metadata and controls

283 lines (261 loc) · 10.4 KB

План семинаров

Семинар 1 — 8 фев. 2020 — Концепции функционального программирования

  • Парадигмы программирования
  • Объектно-ориентированное программирование
  • Архитектура фон Неймана
  • Абстрактные типы данных
  • Функциональное программирование
  • Объекты первого класса
  • Модель подстановки
  • Побочные эффекты
  • Чистота функций
  • Ссылочная прозрачность
  • Стратегии вычислений
  • Отличия ФП от императивного
  • Преимущества и недостатки ФП

Семинар 2 — 15 фев. 2020 — Знакомство с F#, часть 1

  • Основные римитивные типы
  • Объявление значений
  • Основные операторы
  • Объявление функций
  • Применение функций
  • Вывод в консоль
  • Кортежи
  • Функциональные типы
  • Каррирование
  • Опциональный тип
  • Списки
  • Условное выражение
  • Рекурсия
  • Сопоставление с образцом
  • Лямбда-выражения
  • Функции высших порядков
  • Операторы для работы с функциями
  • Преобразования типов
  • Ввод с консоли

Семинар 3 — 29 фев. 2020 — Знакомство с F#, часть 2

  • Объявления типов
  • Алгебраические типы данных
  • Сопоставление с образцом
  • Полиморфные типы
  • Рекурсивные типы
  • Примеры алгебраических типов
  • Ленивые вычисления
  • Ленивые последовательности
  • Корекурсия
  • Хвостовая рекурсия
  • Вычисления с продолжениями

Семинар 4 — 7 мар. 2020 — Свертки в F#

  • Активные шаблоны
  • Правая свертка
  • Левая свертка
  • Бесконечные свертки
  • Обратные свертки
  • Функции reduce
  • Сканирование
  • Развертки

Семинар 5 — 14 мар. 2020 — Вычислительные выражения

  • Классы
  • Вычислительные выражения
  • Последовательные вычисления
  • Реализация последовательных вычислений
  • Асинхронность
  • Инверсия управления
  • Реализация асинхронных вычислений

Семинар 6 — 21 мар. 2020 — Введение в Haskell

  • Язык Haskell
  • Комментарии
  • Литералы
  • Базовые типы
  • Числовые типы
  • Типы чисел с плавающей точкой
  • Объявления констант
  • Операторы
  • Объявление и применение функций
  • Объявление собственных операторов
  • Приоритет и ассоциативность операторов
  • Сечения операторов
  • Кортежи
  • Пары
  • Условное выражение
  • Рекурсия
  • Прерывание программы
  • Сопоставление с образцом
  • Guard expressions
  • Выражение case..of
  • Хвостовая рекурсия
  • Выражение let..in
  • Конструкция where
  • Импорты
  • Экспорты

Семинар 7 — 11 апр. 2020 — Полиморфизм

  • Числовые типы
  • Логический тип
  • Символьный и строковый тип
  • Тип Ordering
  • Параметрический полиморфизм
  • Специальный полиморфизм
  • Вывод типов
  • Функции высших порядков
  • Лямбда-абстракции
  • Полиморфизм кортежей
  • Полиморфизм списков
  • Классы типов
  • Экземпляры классов типов
  • Контексты
  • Полиморфные экземпляры
  • Расширения классов типов
  • Класс типов Enum
  • Класс типов Bounded
  • Класс типов Show
  • Класс типов Read
  • Числовые классы типов
  • Алгебраические типы данных
  • Derived instances
  • Работа с типами данных
  • Типы данных с метками полей
  • Обертки над типами
  • Типы с параметрами
  • Тип данных Maybe
  • Тип данных Either
  • Инфиксные конструкторы данных
  • Кайнды

Семинар 8 — 18 апр. 2020 — Свертки в Haskell

  • Ленивая стратегия вычислений
  • Слабая головная нормальная форма
  • Форсирование вычислений
  • Строгий оператор применения
  • Неопровержимый образец
  • Флаги строгости
  • Бесконечные списки
  • Арифметические последовательности
  • List Comprehension
  • Правая свертка
  • Левая свертка
  • Строгие свертки
  • Свертки без начального значения
  • Сканирование
  • Развертки
  • Полугруппы
  • Стандартные полугруппы
  • Моноиды
  • Стандартные моноиды
  • Моноид First
  • Функции fold и foldMap
  • Сумма и произведение
  • Минимум и максимум
  • Класс типов Foldable
  • Эндоморфизмы
  • Реализация правой свертки через foldMap
  • Дуальные моноиды
  • Реализация левой свертки через foldMap
  • Законы для Foldable-типов
  • Специальные свертки
  • Стандартные Foldable-типы
  • Свертки деревьев

Семинар 9 — 25 апр. 2020 — Аппликативные функторы

  • Функторы
  • Законы для функторов
  • Библиотечные функторы
  • Аппликативные функторы
  • Библиотечные аппликативные функторы
  • Законы для аппликативных функторов
  • Аппликативный функтор Maybe
  • Аппликативный функтор Either
  • Пары как аппликативные функторы
  • Функции как аппликативные функторы
  • Списки как аппликативные функторы
  • Функция liftA2
  • Усеченный справа оператор аппликации
  • Усеченный слева оператор аппликации
  • Класс типов Alternative
  • Законы для Alternative
  • Maybe как Alternative
  • Список как Alternative
  • Функция asum
  • Функция sequenceA_
  • Функция traverse_
  • Ограниченность Foldable-типов
  • Класс типов Traversable
  • Maybe как Traversable-контейнеры
  • Either как Traversable-контейнеры
  • Пары как Traversable-контейнеры
  • Списки как Traversable-контейнеры
  • Типы Identity и Compose
  • Законы для Traversable: Identity
  • Законы для Traversable: Composition
  • Другие законы для Traversable

Семинар 10 — 2 мая 2020 — Монады

  • Монады
  • Оператор монадического связывания
  • Класс типов Monad
  • Стрелка Клейсли
  • One-way монады
  • Законы для монад
  • Класс типов MonadPlus
  • Законы для MonadPlus
  • Монада Identity
  • Монада Maybe
  • do-нотация
  • Монада Either
  • Пример использования Either
  • Монада списка
  • Пример использования монады списка
  • Функции для работы с монадами
  • Монада State
  • Функции для работы с состояниями
  • Пример использование State
  • Монада Reader
  • Преобразование Reader к State
  • Функции для работы с окружением
  • Пример использования Reader
  • Монада Writer
  • Преобразование Writer к State
  • Функции для работы с логом
  • Пример использования Writer
  • Монада IO
  • Сопоставление с образцом в do-нотации
  • Класс типов MonadFail
  • Экземпляры MonadFail
  • Функция guard

Семинар 11 — 11 мая 2020 — Трансформеры монад

  • Комбинация эффектов
  • Композиция на уровне типов
  • Композиция функторов
  • Композиция аппликативных функторов
  • Композиция монад
  • Трансформеры монад
  • Конструктор ReaderT
  • Функтор ReaderT
  • Аппликативный функтор ReaderT
  • Монада ReaderT
  • Класс типов MonadTrans
  • Трансформер ReaderT
  • Трансформация Identity
  • Монада Reader
  • Конструктор WriterT
  • Функтор WriterT
  • Аппликативный функтор WriterT
  • Монада WriterT
  • Трансформер WriterT
  • Монада Writer
  • Конструктор StateT
  • Функтор StateT
  • Аппликативный функтор StateT
  • Монада StateT
  • Трансформер StateT
  • Монада State
  • Инстансы MonadFail
  • Проблема лифтинга
  • Мультипараметрические классы типов
  • Функциональные зависимости
  • Интерфейсы монад
  • Класс типов MonadReader
  • ReaderT как MonadReader
  • WriterT как MonadReader
  • Класс типов MonadWriter
  • WriterT как MonadWriter
  • ReaderT как MonadWriter
  • Неявный лифтинг
  • Трансформер ListT
  • Трансформер монад как монада