Практикум по программированию на языке Haskell, кафедра АЯ 3 курс

Haskell - чисто функциональный язык программирования общего назначения.
Цель практикума - научиться создавать полноценные функциональные приложения.
Практикум включает:

Оценка по практикуму зависит от набранной за семестр суммы баллов, которые начисляются за работу на семинарах, самостоятельные работы, домашние задания, контрольную работу и выполнение практического задания. За несоблюдение контрольных сроков выполнения задания баллы за задание могут снижаться. Все баллы вносятся в таблицу

Обязательное условие зачета по практикуму - положительная оценка за контрольную и выполнение практического задания.

Лекции на YouTube:
01-1 Функции высшего порядка
01-2 Свойства полиморфных функций
02-1 Ленивые вычисления
02-2 Функции над списками. Свертки
03-1 Алгебраические типы данных
03-2 Классы типов
03-3 Функторы
04-1 Моноиды
04-2 Моноидная свертка
05 Аппликативные функторы

Контрольные сроки выполнения практического задания:
7 марта - выбор варианта задания
21 марта - основные типы данных и функции (их сигнатуры) для решаемой задачи
4 апреля - реализация основных функций, прототип проекта
25 апреля - рабочее приложение
2 и 16 мая - отчет по заданию

Варианты практических заданий сообщаются студентам по почте.

Для инсталляции компилятора GHC и необходимых средств разработки: системы сборки Cabal и утилиты Stack следует придерживаться инструкций с официального сайта https://www.haskell.org/downloads/ для каждой платформы (Linux, macOS, Windows).

Требования к выполнению задания практикума

  1. Вариант задания должен быть утвержден преподавателем. Выполненное задание, для которого не был утвержден вариант, приниматься не будет. Допускаются инициативные варианты, если они подробно описаны студентом и согласованы с преподавателем. В случае сложных вариантов возможно совместное выполнение задания двумя студентами, но необходимо это согласовать с преподавателем.
  2. В программе должны быть введены пользовательские типы для внутреннего представления обрабатываемых данных. Введенные типы данных и основные функции программы необходимо согласовать с преподавателем.
  3. Итоговое приложение должно быть организовано как проект с несколькими модулями (не менее 2, включая библиотечные), в качестве образца см. шаблон проекта
  4. Работа над заданием должна удовлетворять контрольным срокам, в ином случае возможно снижение балла за выполненное задание.
  5. Во время выполнения задания рекомендуется следовать методическим указаниям
  6. Реализованная программа принимается только в случае отсутствия в ней неприемлемых недостатков в коде, такие недостатки подлежат безусловному исправлению.
  7. По результатам выполнения задания должен быть составлен письменный отчет, включающий описание: Пример отчета и файл для LaTex

Дополнительные интернет-материалы

https://www.ohaskell.guide/ - "О Haskell по человечески" - русскоязычная книга по основам языка, доступно написанная
http://cmc-msu-ai.github.io/haskell-course/ - конспекты Н. Кудасова
https://al.cs.msu.ru/node/60 - лекции А.Носкова
http://learnyouahaskell.com/ - позитивно и понятно изложенный материал, начиная с самых основ (на английском), есть перевод на русский (высылается по запросу)
https://en.wikibooks.org/wiki/Haskell - справочник-руководство (на английском)
https://ruhaskell.org/ - сайт русскоязычного сообщества языка Haskell
https://epogrebnyak.github.io/functional-programming-jargon/ - жаргон (терминология) функционального программирования
https://learnxinyminutes.com/docs/haskell/ - сжатое описание в формате шпаргалки
https://githowto.com/ - интерактивный курс по работе с системой контроля версий