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

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

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

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

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

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

Литература

Основная:

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

  • Алехандро Серано Мена, Изучаем Haskell Издательство: Питер, 2015

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

Видео

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

Дата и время Название Место Материалы
11 февраля
18:30–19:50
Лямбда-исчисление, лекция Таймс, ауд. с белыми досками слайдывидео
11 февраля
20:00–21:20
Чистое лямбда-исчисление как язык программирования, семинар Таймс, ауд. с белыми досками слайды
18 февраля
18:30–19:50
Рекурсия и редукция, лекция Таймс, ауд. с белыми досками слайдывидео
18 февраля
20:00–21:20
Рекурсия и редукция, семинар Таймс, ауд. с белыми досками слайды
25 февраля
18:30–19:50
Просто типизированное лямбда-исчисление, лекция Таймс, ауд. с белыми досками слайдывидео
25 февраля
20:00–21:20
Просто типизированное лямбда-исчисление, семинар Таймс, ауд. с белыми досками слайды
04 марта
18:30–19:50
Введение в Haskell, лекция Таймс, ауд. с белыми досками слайдывидео, файлы
04 марта
20:00–21:20
Введение в Haskell , семинар Таймс, ауд. с белыми досками слайды
11 марта
18:30–19:50
Программирование на языке Haskell, лекция Таймс, ауд. с белыми досками слайдывидео, файлы
11 марта
20:00–21:20
Программирование на языке Haskell, семинар Таймс, ауд. с белыми досками слайды
18 марта
18:30–19:50
Классы типов, лекция Таймс, ауд. с белыми досками слайдывидео, файлы
18 марта
20:00–21:20
Реализация представителей стандартных классов типов, семинар Таймс, ауд. с белыми досками слайды
25 марта
18:30–19:50
Свертки, лекция Таймс, ауд. с белыми досками слайдывидео, файлы
25 марта
20:00–21:20
Использование сверток, семинар Таймс, ауд. с белыми досками слайды
01 апреля
18:30–19:50
Аппликативные функторы, лекция Таймс, ауд. с белыми досками слайдывидео, файлы
01 апреля
20:00–21:20
Аппликативные функторы, семинар Таймс, ауд. с белыми досками слайды
15 апреля
18:30–19:50
Монады, лекция Таймс, ауд. с белыми досками слайдывидео, файлы
15 апреля
20:00–21:20
Программирование с помощью стандартных монад, семинар Таймс, ауд. с белыми досками слайды
22 апреля
18:30–19:50
Использование монад, лекция Таймс, ауд. с белыми досками слайдывидео, файлы
22 апреля
20:00–21:20
Использование монад, семинар Таймс, ауд. с белыми досками слайды
29 апреля
18:30–19:50
Трансформеры монад, лекция Таймс, ауд. с белыми досками слайдывидео, файлы
29 апреля
20:00–21:20
Монады для обработки исключений, семинар Таймс, ауд. с белыми досками слайды
13 мая
18:30–19:50
Вывод типов, лекция Таймс, ауд. с белыми досками слайдывидео
13 мая
20:00–21:20
Реализация алгоритма вывода типов, семинар Таймс, ауд. с белыми досками слайды
18 мая
18:30–19:50
Дополнительное занятие, семинар Таймс, ауд. с белыми досками Нет