Бакалавриат
2025/2026





Промышленное программирование на Haskell
Статус:
Курс по выбору (Прикладная математика и информатика)
Где читается:
Факультет компьютерных наук
Когда читается:
4-й курс, 3 модуль
Охват аудитории:
для своего кампуса
Преподаватели:
Соколов Павел Павлович
Язык:
русский
Кредиты:
4
Программа дисциплины
Аннотация
Haskell — современный язык программирования общего назначения, который активно используют в индустрии для написания эффективного, компактного, легко читаемого и устойчивого к ошибкам программиста кода. Не верите? В этом курсе вашему вниманию предлагаются настоящие жемчужины функционального программирования, которые заставят вас изменить своё мнение. В первой части курса мы увидим, как Haskell используют в продакшене: как читают и выводят структурированные данные, как комбинируют библиотеки и сайд-эффекты, как тестируют получающийся код. Обещаю, что каждое из решений вас удивит простотой, удобством использования и композициональностью, которые достигаются благодаря главным силам Хаскеля: ленивым вычислениям, контролю сайд-эффектов и продвинутой системе типов. Также будет предложена серия мини-проектов с заданиями, направленными на закрепление полученных знаний.
Цель освоения дисциплины
- Научиться продуктивно программировать на Haskell
- Познакомиться с промышленными стандартами разработки на Haskell
Планируемые результаты обучения
- Умение писать эффективный код на Haskell
- Освоить функциональную парадигму решения задач
- Попрактиковаться в разделении кода на хорошо изолируемые компоненты
Содержание учебной дисциплины
- Лекция 1
- Лекция 2
- Лекция 3
- Лекция 4
- Лекция 5
- Лекция 6
- Лекция 7
- Лекция 8
- Лекция 9
- Лекция 10
- Синтаксис Haskell. Ленивые вычисления.
- Синтаксис Haskell. IO. Классы типов Num, Read.
- Моноиды. Монады. Законы классов.
- Монады Maybe, RWS, IO. Генераторы случайности.
- Классы Alternative и MonadPlus. Парсеры
- Композиция эффектов. Трансформеры монад.
- Монада Free. List fusion. Параметричность.
- Многопоточность и конкурентность. STM.
- Стриминг и управление ресурсами.
- Программирование на уровне типов.
Элементы контроля
- Защита проектаУстный рассказ о проекте, выполненном на Haskell за время обучения на курсе. Тема проекта – одна из предложенных либо инициативная. Оценивается умение применять знания, полученные на курсе, в законченном и полезном проекте.
- Домашнее задание 1Мини-проект по темам лекций и семинаров 1-4. До 12 баллов (2 балла – бонусные).
- Домашнее задание 4Аналогично домашнему заданию 1, но по темам лекций и семинаров 7-10.
- Домашнее задание 3Аналогично домашнему заданию 1, но по темам лекций и семинаров 5-8.
- Домашнее задание 2Аналогично домашнему заданию 1, но по темам лекций и семинаров 3-6.
Промежуточная аттестация
- 2025/2026 3rd moduleИтог = Округление(min(10, 0.64 * ДЗ + 0.36 * ПР)), где ДЗ – средняя оценка за все домашние задания, ПР – оценка за проектную работу.
Список литературы
Рекомендуемая основная литература
- Душкин, Р. В. Справочник по языку Haskell : справочник / Р. В. Душкин. — Москва : ДМК Пресс, 2009. — 544 с. — ISBN 5-94074-410-9. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/1252 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
- Курт, У. Программируй на Haskell : руководство / У. Курт , перевод с английского Я. О. Касюлевича. — Москва : ДМК Пресс, 2019. — 648 с. — ISBN 978-5-97060-694-0. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/123706 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
Рекомендуемая дополнительная литература
- Hutton, G. (2007). Programming in Haskell. Cambridge, UK: Cambridge University Press. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=206716
- Душкин, Р. В. Функциональное программирование на языке Haskell : учебник / Р. В. Душкин. — Москва : ДМК Пресс, 2008. — 609 с. — ISBN 5-94074-335-8. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/1247 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.