EMBER_CLI_FASTBOOT_BODY

Функциональное программирование на языке Haskell

Play
To watch this video please visit https://stepik.org/lesson//step/

About the course

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

Программа базируется на курсах, читавшихся в Академическом университете РАН и Computer Science Center.

Содержание курса:

Модуль 1. Первый модуль посвящен основам синтаксиса языка. Вы познакомитесь со стандартной средой разработки, научитесь реализовывать пользовательские функции и операторы, используя механизмы локальных связываний и рекурсии. Вы также изучите основы системы типов языка и его базовые типы.

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

Модуль 3. Модуль полностью посвящен базовому контейнерному типу функциональных языков - спискам. Вы узнаете как использовать сопоставление с образцом для реализации функций над списками, познакомитесь с широким набором библиотечных функций, позволяющих их создавать и обрабатывать. Также рассмотрите полезные синтаксические надстройки – арифметические последовательности и генераторы списков, которые еще более упрощают работу с этим контейнерным типом. Три последних урока этого модуля посвящены сверткам списков.

Модуль 4. Модуль посвящен способам объявления пользовательских типов данных. Вы узнаете как объявлять типы сумм, произведений и сумм произведений и каким образом делать типы полиморфными. В модуле вас ждет обсуждение синтаксиса записей, использования меток полей, рекурсии на уровне типов и свойств рекурсивных типов данных. Вы познакомитесь с такими полезными инструментами, как синонимы типов, обертки newtype и их свойствами.

Модуль 5. Основная тема модуля – монады. Вы узнаете как устроен этот класс типов, какие требования предъявляются к конструкторам типов, которые могут быть сделаны его представителям, какие законы должны выполнятся для представителей этого класса. Познакомившись с концепцией вычислений с эффектами, вы поймете, почему этот класс типов так важен для программирования на Haskell.

Instructors

  1. доцент кафедры МИТ СПбАУ РАН

Reviews

Artyom Kanev May 11, 2018 link
Rated:  5
Лучший из известных мне материалов по языку на русском.
Rated:  5
Курс отличный и язык отличный. Единственное замечание, что формулировки некоторых задач оставляют желать лучшего.
Rated:  4
Некоторые задания плохо сформулированы.
Play
To watch this video please visit https://stepik.org/lesson//step/
5 All reviews

Курс знакомит слушателей с языком Haskell - наиболее известным чистым функциональным языком программирования. Мы изучим понятийный аппарат и методы программирования, характерные для функциональных языков, и научимся применять их, используя богатый инструментарий, предоставляемый языком Haskell.
Совместный курс
Академического университета и
Computer Science Center.

Workload:
5-6 часов в неделю
Expected time to complete:
42 hours
Language:
Русский
Certificate:
Issuing
Certificate details
Certificate condition: 140 points
With distinction: 200 points

About the course

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

Программа базируется на курсах, читавшихся в Академическом университете РАН и Computer Science Center.

Содержание курса:

Модуль 1. Первый модуль посвящен основам синтаксиса языка. Вы познакомитесь со стандартной средой разработки, научитесь реализовывать пользовательские функции и операторы, используя механизмы локальных связываний и рекурсии. Вы также изучите основы системы типов языка и его базовые типы.

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

Модуль 3. Модуль полностью посвящен базовому контейнерному типу функциональных языков - спискам. Вы узнаете как использовать сопоставление с образцом для реализации функций над списками, познакомитесь с широким набором библиотечных функций, позволяющих их создавать и обрабатывать. Также рассмотрите полезные синтаксические надстройки – арифметические последовательности и генераторы списков, которые еще более упрощают работу с этим контейнерным типом. Три последних урока этого модуля посвящены сверткам списков.

Модуль 4. Модуль посвящен способам объявления пользовательских типов данных. Вы узнаете как объявлять типы сумм, произведений и сумм произведений и каким образом делать типы полиморфными. В модуле вас ждет обсуждение синтаксиса записей, использования меток полей, рекурсии на уровне типов и свойств рекурсивных типов данных. Вы познакомитесь с такими полезными инструментами, как синонимы типов, обертки newtype и их свойствами.

Модуль 5. Основная тема модуля – монады. Вы узнаете как устроен этот класс типов, какие требования предъявляются к конструкторам типов, которые могут быть сделаны его представителям, какие законы должны выполнятся для представителей этого класса. Познакомившись с концепцией вычислений с эффектами, вы поймете, почему этот класс типов так важен для программирования на Haskell.

Requirements

Предполагается, что слушатели имеют представление о программировании на одном из языков (желательно типизированных): С, С++, Java, C# и т. п.

Target audience

Курс рассчитан на студентов младших курсов технических вузов.

This course is entirely free. All content is available now.