Функциональное программирование на языке Haskell
О курсе
Подробнее
В рамках курса мы рассмотрим ленивую и энергичную семантики, алгебраические типы данных и их использование для сопоставления с образцом. Знакомясь с богатой системой типов Haskell, мы обсудим параметрический и специальный полиморфизм и, в частности, механизм классов типов. Мы изучим основные классы типов из стандартной библиотеки Haskell, в том числе функторы и монады. Мы научимся программировать, используя стандартные монады, в частности обсудим проблему ввода-вывода в чистых языках и его реализацию в Haskell с помощью монады IO, а также работу с изменяемым состоянием с помощью монады State.Программа базируется на курсах, читавшихся в Академическом университете РАН и Computer Science Center.Содержание курса:Модуль 1. Первый модуль посвящен основам синтаксиса языка. Вы познакомитесь со стандартной средой разработки, научитесь реализовывать пользовательские функции и операторы, используя механизмы локальных связываний и рекурсии. Вы также изучите основы системы типов языка и его базовые типы.Модуль 2. Второй модуль даст вам возможность более подробно изучить систему типов языка. Вы познакомитесь с параметрическим и специальным полиморфизмом и узнаете, как последний реализован в Haskell через механизм классов типов. В последнем уроке модуля вы познакомитесь с системой модулей языка и компиляцией программ.Модуль 3. Модуль полностью посвящен базовому контейнерному типу функциональных языков - спискам. Вы узнаете как использовать сопоставление с образцом для реализации функций над списками, познакомитесь с широким набором библиотечных функций, позволяющих их создавать и обрабатывать. Также рассмотрите полезные синтаксические надстройки – арифметические последовательности и генераторы списков, которые еще более упрощают работу с этим контейнерным типом. Три последних урока этого модуля посвящены сверткам списков.Модуль 4. Модуль посвящен способам объявления пользовательских типов данных. Вы узнаете как объявлять типы сумм, произведений и сумм произведений и каким образом делать типы полиморфными. В модуле вас ждет обсуждение синтаксиса записей, использования меток полей, рекурсии на уровне типов и свойств рекурсивных типов данных. Вы познакомитесь с такими полезными инструментами, как синонимы типов, обертки newtype и их свойствами. Модуль 5. Основная тема модуля – монады. Вы узнаете как устроен этот класс типов, какие требования предъявляются к конструкторам типов, которые могут быть сделаны его представителям, какие законы должны выполнятся для представителей этого класса. Познакомившись с концепцией вычислений с эффектами, вы поймете, почему этот класс типов так важен для программирования на Haskell.
- Предполагается, что слушатели имеют представление о программировании на одном из языков (желательно типизированных): С, С++, Java, C# и т. п.
- Курс рассчитан на студентов младших курсов технических вузов.
Содержание
Программа курса
5 занятий№ТемаЧто внутри
01Введение- Установка и настройка среды
- Функции
- Операторы
- Базовые типы
- Рекурсия
- Локальные связывания и правила отступов
02Основы программирования- Параметрический полиморфизм
- Параметрический полиморфизм (2)
- Классы типов
- Стандартные классы типов
- Нестрогая семантика
- Модули и компиляция
03Списки- Функции для работы со списками
- Функции высших порядков над списками
- Генераторы списков
- Правая свертка
- Левая свертка и ее сравнение с правой
- Родственные сверткам функции
04Типы данных- Типы перечислений
- Типы произведений и сумм произведений
- Синтаксис записей
- Типы с параметрами
- Рекурсивные типы данных
- Синонимы и обертки для типов
05Монады- Класс типов Functor и законы для него
- Определение монады
- Монада Identity
- Список и Maybe как монады
- Монада IO
- Монада Reader
- Монада Writer
- Монада State
01Введение
- Установка и настройка среды
- Функции
- Операторы
- Базовые типы
- Рекурсия
- Локальные связывания и правила отступов
02Основы программирования
- Параметрический полиморфизм
- Параметрический полиморфизм (2)
- Классы типов
- Стандартные классы типов
- Нестрогая семантика
- Модули и компиляция
03Списки
- Функции для работы со списками
- Функции высших порядков над списками
- Генераторы списков
- Правая свертка
- Левая свертка и ее сравнение с правой
- Родственные сверткам функции
04Типы данных
- Типы перечислений
- Типы произведений и сумм произведений
- Синтаксис записей
- Типы с параметрами
- Рекурсивные типы данных
- Синонимы и обертки для типов
05Монады
- Класс типов Functor и законы для него
- Определение монады
- Монада Identity
- Список и Maybe как монады
- Монада IO
- Монада Reader
- Монада Writer
- Монада State
Организатор
Автор курса
StepikStepik — образовательная платформа и конструктор онлайн-курсов. Мы разрабатываем алгоритмы адаптивного обучения, сотрудничаем с авторами MOOC, помогаем в проведении олимпиад и программ переподготовки. Наша цель — сделать образование открытым и удобным.
Stepik — широко известная российская образовательная платформа, основанная в 2013 году. На Stepik зарегистрировано более миллиона пользователей из России и стран СНГ.
В настоящее время на Stepik представлены несколько тысяч учебных курсов на самые разные темы.
Подробнее об авторе Мнения учеников
Отзывы о курсе
Информация обновлена 7 сентября 2026 г.