Программа

Введение

Особенности функционального программирования(ФП)

Отличия ФП от императивного программирования

Сильные и слабые стороны ФП

Лямбда-исчиcление

Формализации понятия алгоритма

Чистое λ-исчисление

Свободные и связанные переменные

Комбинаторы

Каррирование

Подстановка

Правила преобразования

Эквивалентность λ-термов

Рекурсия и редукция

Теорема о неподвижной точке, Y-комбинатор

Совместимые (с λ-исчислением) отношения, отношения редукции, отношения равенства(конгруэнтности)

Одношаговая β-редукция, β-редукция, β-равенство

Редукционные графы

Нормальная форма(nf)

Ненормализуемые, слабо нормализуемые и сильно нормализуемые термы

Теорема Чёрча-Россера, теорема об общем редукте, теорема о единственности nf

Стратегии редукции

Головная нормальная форма, слабая головная нормальная форма

Теорема о нормализации

Просто(е) типизированное лямбда-исчисление

Понятие типа (предназначение типов)

Типы в логике и в программировании

Просто(е) типизированное λ-исчисление

Типизация по Чёрчу и Карри

Введение в язык 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*