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

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

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

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

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

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

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

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

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

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

Требования

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

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

Курс рассчитан на студентов младших курсов технических вузов.
Dates:
  • Coming soon, Free schedule
Course properties:
  • Free:
  • Paid:
  • Certificate:
  • MOOC:
  • Video:
  • Audio:
  • Email-course:
  • Language: Russian Ru

Reviews

No reviews yet. Want to be the first?

Register to leave a review

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

© 2013-2019