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

Денис Москвин, Stepik

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

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

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

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

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

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

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

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

Требования

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

Целевая аудитория

Курс рассчитан на студентов младших курсов технических вузов.
Сессии:
  • Скоро, Свободный график
Характеристики онлайн курса:
  • Бесплатный:
  • Платный:
  • Сертификат:
  • MOOC:
  • Видеолекции:
  • Аудиолекции:
  • Email-курс:
  • Язык: Русский Ru

Отзывы

Пока никто не написал отзыв по этому курсу. Хотите быть первым?

Зарегистрируйтесь, чтобы оставить отзыв

Show?id=n3eliycplgk&bids=695438
Входит в подборки курсов:
Small-icon.hover Functional Programming
Материалы по функциональному программированию
NVIDIA
Ещё курсы на эту тему:
Cscenter Функциональное программирование
Программа занятий по функциональному программированию включает в себя лекци...
600_11_haskell_amtstco Функциональное программирование на языке Haskell (часть 2)
Курс является продолжением курса "Функциональное программирование на языке Haskell...
Cc2d1f091548ea0802ab2d39cb5e0340 Функциональное программирование на языке Haskell (часть 2)
Курс является продолжением курса "Функциональное программирование на языке Haskell...
196e31384a432263e11955e0193a5728 Функциональное программирование на языке Haskell
Курс знакомит слушателей с языком Haskell - наиболее известным чистым функц...
Extpicture Программирование на Haskell
Курс ставит своей целью познакомить студентов с функциональным языком прогр...
Ещё из рубрики «Компьютерные науки»:
Netology2016 Новогодняя распродажа в Нетологии
Скидка на ВСЕ курсы 2016 руб! Электронная коммерция и SMM, веб-дизайн и HTML...
150x150 Курсы информационных технологий
Компания «Яндекс» регулярно проводит набор на Курсы информационных технолог...
B-teaser-0 Алгоритмы и структуры данных поиска
Лектор: Максим Александрович Бабенко, заместитель директора отделения computer...
B-teaser-0 Машинное обучение
Лектор: Константин Вячеславович Воронцов, старший научный сотрудник Вычисли...
B-teaser-0 Параллельные и распределенные вычисления
Лектор: Олег Викторович Сухорослов, старший научный сотрудник Центра грид-т...
Ещё от Stepik:
Ab52991281e25dd61c05e21a18b857d4 Естественные науки
Объект изучения географии — законы и закономерности размещения и взаимодейс...
Csc_algo Алгоритмы и структуры данных
Данный курс перезапускаться не будет. Вместо него мы подготовили улучшенную...
Csc_c Программирование на языке C++
Данный базовый курс повествует об основных средствах языка C++. Особое вним...
Csc_system_elements Введение в архитектуру ЭВМ. Элементы операционных систем.
Данный обзорный курс позволяет понять основы функционирования компьютерной ...
11 Программирование на Python
Курс посвящен базовым понятиям и элементам языка программирования Python (о...

© 2013-2019