2026/2027




Промышленное программирование на Haskell 1
Язык:
русский
Кредиты:
3
Контактные часы:
40
Программа дисциплины
Аннотация
Haskell — современный язык программирования общего назначения, который активно используют в индустрии для написания эффективного, компактного, легко читаемого и устойчивого к ошибкам программиста кода. Не верите? В этом курсе вашему вниманию предлагаются настоящие жемчужины функционального программирования, которые заставят вас изменить своё мнение. В первой части курса мы увидим, как Haskell используют в продакшене: как читают и выводят структурированные данные, как комбинируют библиотеки и сайд-эффекты, как тестируют получающийся код. Обещаю, что каждое из решений вас удивит простотой, удобством использования и композициональностью, которые достигаются благодаря главным силам Хаскеля: ленивым вычислениям, контролю сайд-эффектов и продвинутой системе типов. Также будет предложена серия мини-проектов с заданиями, направленными на закрепление полученных знаний.
Цель освоения дисциплины
- Сформировать практические навыки разработки на Haskell в рамках функциональной парадигмы: научиться продуктивно программировать, применять промышленные стандарты разработки, эффективно разделять код на изолированные компоненты и решать задачи, опираясь на принципы функционального подхода.
Планируемые результаты обучения
- Владеть навыками продуктивно программировать на Haskell
- Ознакомиться с промышленными стандартами разработки на Haskell
- Усвоить функциональную парадигму решения задач
- Практиковаться в разделении кода на хорошо изолируемые компоненты
Содержание учебной дисциплины
- Синтаксис Haskell. Рекурсия. Полиморфизм. ФВП.
- Алгебраические типы данных. Классы типов.
- Библиотека containers. Моноиды. Функторы. Класс Foldable.
- Парсеры. Аппликативные функторы. Класс Traversable.
- Монады и do-нотация. IO, random. Веб-серверы на scotty.
- Многопоточность в Haskell. Software transactional memory.
- Монады чистого программирования: RWS, Either, [].
- Композиция (аппликативных) функторов. Трансформеры.
- Семейства типов. Системы эффектов на примере effectful.
- Драйверы баз данных на примере rel8. Исключения и ресурсы.
Элементы контроля
- Домашние заданияМини-проекты по теме лекций и семинаров. Каждое оценивается по 10-балльной шкале.
- Защита проектаУстный рассказ о проекте, выполненном на Haskell за время обучения на курсе. Тема проекта – одна из предложенных либо инициативная.
Список литературы
Рекомендуемая основная литература
- Lipovaca M. Learn you a Haskell for great good!: a beginner's guide. – No Starch Press, 2011. – 404 pp.
- Lipovača, M. (2011). Learn You a Haskell for Great Good! : A Beginner’s Guide. San Francisco, Calif: No Starch Press. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=440054
- Миран, Л. Изучай Haskell во имя добра! : учебное пособие / Л. Миран , перевод с английского Д. Леушина [и др.]. — Москва : ДМК Пресс, 2012. — 490 с. — ISBN 978-5-94074-749-9. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/4817 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
- Языки программирования : учебник для вузов, Баженова, И. Ю., 2012
Рекомендуемая дополнительная литература
- Theories of programming languages, Reynolds, J. C., 2009
- Курт, У. Программируй на Haskell : руководство / У. Курт , перевод с английского Я. О. Касюлевича. — Москва : ДМК Пресс, 2019. — 648 с. — ISBN 978-5-97060-694-0. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/123706 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.