This shows you the differences between two versions of the page.
courses:functional_programming:lectures [2018/08/30 18:25] vnikolenko created |
courses:functional_programming:lectures [2022/12/10 09:08] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Программа ====== | ||
- | ===== Введение ===== | ||
- | * Особенности функционального программирования(ФП) | ||
- | * Отличия ФП от императивного программирования | ||
- | * Сильные и слабые стороны ФП | ||
- | | ||
- | ===== Лямбда-исчиcление ===== | ||
- | * Формализации понятия алгоритма | ||
- | * Чистое λ-исчисление | ||
- | * Свободные и связанные переменные | ||
- | * Подстановка | ||
- | * Правила преобразования | ||
- | * Эквивалентность λ-термов | ||
- | * Комбинаторы | ||
- | * Расширения чистого λ-исчисления | ||
- | ===== Рекурсия и редукция ===== | ||
- | * Теорема о неподвижной точке | ||
- | * Редексы и нормальная форма | ||
- | * Редукция и её стратегии | ||
- | * Теорема Черча-Россера | ||
- | |||
- | ===== Просто(е) типизированное лямбда-исчисление ===== | ||
- | * Понятие типа (предназначение типов) | ||
- | * Типы в логике и в программировании | ||
- | * Просто(е) типизированное λ-исчисление | ||
- | * Типизация по Чёрчу и Карри | ||
- | |||
- | ===== Введение в язык Haskell ===== | ||
- | * Базовые типы | ||
- | * Связывание | ||
- | * Определение функций | ||
- | * Охранные выражения | ||
- | * Конструкции where и let...in | ||
- | * Операторы и сечения | ||
- | * Модули | ||
- | * Реализации языка Haskell и инфраструктура | ||
- | |||
- | ===== Основы программирования в Haskell ===== | ||
- | * Ленивые и строгие вычисления | ||
- | * Алгебраические типы данных: декартово произведение и размеченное объединение | ||
- | * Сопоставление с образцом | ||
- | * Работа со списками | ||
- | * Генераторы списков | ||
- | * Функции высших порядков над списками | ||
- | |||
- | ===== Классы типов ===== | ||
- | * Виды полиморфизма | ||
- | * Классы типов | ||
- | * Сравнение с другими языками программирования | ||
- | * Обзор стандартных классов типов | ||
- | * Особенности внутренней реализации классов типов | ||
- | |||
- | ===== Свертки и моноиды ===== | ||
- | * Левая и правая свертки | ||
- | * Родственные сверткам функции | ||
- | * Моноиды | ||
- | * Законы моноидов | ||
- | |||
- | ===== Функторы ===== | ||
- | * Функторы | ||
- | * Законы для функторов | ||
- | * Аппликативные функторы | ||
- | * Законы для аппликативных функторов | ||
- | |||
- | ===== Использование аппликативных функторов ===== | ||
- | * Аппликативные парсеры | ||
- | * Класс типов Alternative | ||
- | * Законы класса Alternative | ||
- | * Класс типов Traversable | ||
- | * Законы класса Traversable | ||
- | |||
- | ===== Монады ===== | ||
- | * Стрелка Клейсли | ||
- | * Понятие монады | ||
- | * Класс типов Monad | ||
- | * Монады Identity, Maybe | ||
- | * Список как монада | ||
- | * Отличие монад от аппликативных функторов | ||
- | |||
- | ===== Стандартные монады ===== | ||
- | * Reader | ||
- | * Writer | ||
- | * State | ||
- | * IO | ||
- | * Функции ввода-вывода | ||
- | |||
- | ===== Трансформеры монад ===== | ||
- | * Класс типов MonadPlus | ||
- | * Законы класса MonadPlus | ||
- | * Монада Except | ||
- | * Мультипараметрические классы типов | ||
- | * Трансформеры монад | ||
- | * Законы для класса типов MonadTrans | ||
- | * Стандартные трансформеры библиотеки mtl | ||
- | |||
- | ===== Вывод типов* ===== | ||
- | ===== Программирование с зависимыми типами* ===== | ||
- | ===== Чисто функциональные структуры данных* ===== | ||
- | ===== ФП в mainstream-языках* ===== | ||
- | ===== GHC Core* ===== |