О курсе
Этот курс является продолжением курса "Функциональное программирование на языке Haskell".
В его рамках мы познакомимся с рядом новых классов типов и типов данных, которые позволят сделать наши программы еще более выразительными и лаконичным. Особое внимание будет уделено программированию с эффектами. Мы встретимся с новыми монадами, узнаем про аппликативные функторы - класс типов, лежащий между функторами и монадами. Мы обобщим понятие свертки, знакомое нам по спискам, на произвольные контейнерные типы, введя класс типов Foldable. Не останавливаясь на этом, мы введем класс Traversable, соединяющий идеи функтора и свертки с одной стороны и отображающей/сворачивающей функции с аппликативным/монадическим эффектом с другой. Мы научимся реализовывать вычисления с составными эффектами, используя как механизм композиции на уровне типов, так и более мощный инструментарий монадических трансформеров.
При изучении языка мы стараемся не просто познакомить слушателей с библиотечными функциями, типами и классами типов, но и разобрать их реализацию. Часто мы просто последовательно конструируем модуль стандартной библиотеки с нуля, по ходу дела обсуждая причины, по которым приняты те или иные решения. Нам кажется, что такой подход способствует более глубокому пониманию устройства языка и приводит к более зрелым навыкам программирования.
Программа базируется на курсах, читавшихся в Академическом университете РАН и Computer Science Center.
Начальные требования
Знакомство с синтаксисом и стандартной библиотекой Haskell в объеме первой части курса