Функциональное программирование
Санкт-Петербург / весна 2019, посмотреть все семестры

Курс знакомит слушателей с функциональными языками программирования и методами программирования на этих языках.

Мы рассмотрим отличия функционального подхода к программированию от традиционного императивного, познакомимся с лямбда-исчислением, как теоретической основой функционального программирования, изучим системы типов функциональных языков и алгоритм вывода типов Хиндли-Дамаса-Милнера.

Мы познакомимся с языком программирования Haskell, изучим ленивую и энергичную семантики, алгебраические типы данных и их использование для сопоставления с образцом. Изучая систему типов языка Haskell, мы обсудим параметрический и специальный полиморфизм и, в частности, механизм классов типов.

Мы изучим основные классы типов из стандартной библиотеки Haskell, в том числе функторы, аппликативные функторы и монады. Мы обсудим различные стратегии свертки и обхода списков, деревьев и познакомимся с обобщением этих операций в классах типов Foldable и Traversable.

Мы научимся программировать, используя стандартные монады, в частности обсудим проблему ввода-вывода в чистых языках и его реализацию в Haskell с помощью монады IO, а также работу с изменяемым состоянием с помощью монады State и родственных ей монад.

Критерии выставления оценок за курс

Всего за выполнение домашних заданий, курсовой работы и тестирования можно заработать 156 баллов.

Оценка отлично выставляется тем, кто наберет 90% баллов и более (140 баллов). Оценка хорошо - тем, кто наберет 75% баллов (117 баллов). Оценка удовлетворительно (зачет) - тем, кто наберет 50% баллов (78 баллов).

Литература

Основная:

  • Miran Lipovača, Learn You a Haskell for Great Good! A Beginner’s Guide 2011 http://learnyouahaskell.com/chapters (русский перевод: Миран Липовача, Изучай Haskell во имя добра! Издательство: ДМК Пресс, 2012)

  • Уилл Курт, Программируй на Haskell, М.:ДМК Пресс, 2019

Дополнительная:

Видео

Видео всех лекций прошлогодней версии курса можно смотреть на канале CS центра на YouTube.

Дата и время Название Место Материалы
13 февраля
18:30–19:50
Лямбда-исчисление, лекция Таймс, ауд. с чёрными досками слайды
13 февраля
20:00–21:20
Чистое лямбда-исчисление как язык программирования, семинар Таймс, ауд. с чёрными досками файлы
20 февраля
18:30–19:50
Рекурсия и редукция, лекция Таймс, ауд. с чёрными досками слайды
20 февраля
20:00–21:20
Рекурсия и редукция, семинар Таймс, ауд. с чёрными досками файлы
27 февраля
18:30–19:50
Просто типизированное лямбда-исчисление, лекция Таймс, ауд. с чёрными досками слайды
27 февраля
20:00–21:20
Просто типизированное лямбда-исчисление, семинар Таймс, ауд. с чёрными досками файлы
06 марта
18:30–19:50
Введение в Haskell, лекция Таймс, ауд. с чёрными досками слайдыфайлы
06 марта
20:00–21:20
Введение в Haskell, семинар Таймс, ауд. с чёрными досками файлы
13 марта
18:30–19:50
Программирование на языке Haskell, лекция Таймс, ауд. с чёрными досками слайдыфайлы
13 марта
20:00–21:20
Программирование на языке Haskell, семинар Таймс, ауд. с чёрными досками файлы
20 марта
18:30–19:50
Классы типов, лекция Таймс, ауд. с чёрными досками слайдыфайлы
20 марта
20:00–21:20
Свертки, лекция Таймс, ауд. с чёрными досками слайдыфайлы
22 марта
20:20–21:40
Классы типов, моноиды и свертки, семинар Таймс, ауд. с чёрными досками файлы
27 марта
18:30–19:50
Аппликативные функторы, лекция Таймс, ауд. с чёрными досками слайдыфайлы
27 марта
20:00–21:20
Аппликативные функторы, семинар Таймс, ауд. с чёрными досками файлы
03 апреля
18:30–19:50
Использование аппликативных функторов, лекция Таймс, ауд. с белыми досками слайдыфайлы
03 апреля
20:00–21:20
Использование аппликативных функторов, семинар Таймс, ауд. с белыми досками файлы
10 апреля
18:30–19:50
Монады, лекция Таймс, ауд. с чёрными досками слайдыфайлы
10 апреля
20:00–21:20
Монады, семинар Таймс, ауд. с чёрными досками файлы
12 апреля
20:20–21:40
Вывод типов, лекция Таймс, ауд. с чёрными досками слайды
17 апреля
18:30–19:50
Использование монад, лекция Таймс, ауд. с чёрными досками слайдыфайлы
17 апреля
20:00–21:20
Использование монад, семинар Таймс, ауд. с чёрными досками файлы
24 апреля
18:30–19:50
Трансформеры монад, лекция Таймс, ауд. с чёрными досками слайдыфайлы
24 апреля
20:00–21:20
Трансформеры монад, семинар Таймс, ауд. с чёрными досками файлы