Функциональное программирование на языке 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':
D732c05d-76a2-4166-a842-4c737584d0bd-7f8c01e1d0d0.small Введение в функциональное программирование на Common Lisp
Научитесь использовать концепции функционального программирования при напис...
New-logo Скидка до 3000 руб. от Нетологии в Январе 2017
Скидки: - 3000 рублей на курсы «Копирайтинг» и «Веб-аналитика» — промокод hochu...
Cf4c6c5e92f9469c8af342465d00a462 Практический анализ данных
Практический курс по анализу данных, включающий в себя максимально полезные...
Netology2016 Новогодняя распродажа в Нетологии
Скидка на ВСЕ курсы 2016 руб! Электронная коммерция и SMM, веб-дизайн и HTML...
150x150 Курсы информационных технологий
Компания «Яндекс» регулярно проводит набор на Курсы информационных технолог...
More from 'Stepik':
1a537dfd19e38932917c359076de2b2b Азбука финансов
Авторский курс, разработанный с учетом потребностей и возможностей аудитори...
035f04824e233da28b48fc5e72c498eb Разработка веб-сервисов на Go - основы языка
Курс даст основы программирования на языке Go, а так же опыт применения язы...
F709b6de8c30a3d0141cd8b7e0c685f2 Разработка веб-сервисов на Golang, часть 2
В курсе будут обзорно рассмотрены типовые задачи, возникающие перед разрабо...
Csc_algo Алгоритмы и структуры данных
Данный курс перезапускаться не будет. Вместо него мы подготовили улучшенную...
Csc_c Программирование на языке C++
Данный базовый курс повествует об основных средствах языка C++. Особое вним...

© 2013-2019