• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
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 за время обучения на курсе. Тема проекта – одна из предложенных либо инициативная.
Промежуточная аттестация

Промежуточная аттестация

  • 2026/2027 3rd module
    0.7 * Домашние задания + 0.3 * Защита проекта
Список литературы

Список литературы

Рекомендуемая основная литература

  • 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). — Режим доступа: для авториз. пользователей.

Авторы

  • Соколов Павел Павлович