Программирование на языке Haskell

Haskell — это чистый функциональный язык программирования общего назначения.

В рамках этого курса Вы познакомитесь с его основами и научитесь создавать полноценные функциональные приложения!

Материалы курса

Данный курс состоит из видео-лекций, семинаров и семестрового практического задания.

Лекции

Все лекции доступны для просмотра на YouTube:

Семинары

Материалы семинаров доступны в репозитории cmc-haskell-2018/seminars.

Практическое задание

Сроки этапов сдачи практического задания на Haskell:

Методические указания и варианты доступны на странице практических заданий.

Оценка

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

Все результаты будут внесены в таблицу Haskell 2018.

Haskell Platform

Для работы с Haskell в этом семестре рекомендуется установить Haskell Platform с официального сайта языка. На сайте есть инструкции по установке для каждой платформы (Linux, macOS, Windows). Haskell Platform содержит следующие инструменты:

Интерпретатор GHCi

Для работы с небольшими программами рекомендуется использовать интерпретатор GHCi. Чтобы запустить его наберите команду ghci. Здесь вы можете определять функции, типы и играться с данными:

>>> type Offset = Float
>>> let offsets = [0, 200 ..]
>>> take 10 offsets
[0,200,400,600,800,1000,1200,1400,1600,1800]
>>> :t take
take :: Int -> [a] -> [a]

Чтобы загрузить типы и функции из файла, используйте команду :load:

>>> :load /path/to/your/file.hs

Если вы работаете с проектом Stack, используйте stack ghci из корня проекта, чтобы автоматически подгрузить все модули этого проекта.

Например, для проекта demo-galaxies:

cd demo-galaxies
stack ghci
>>> massCenter [Particle 1 (0, 0) (0, 0), Particle 2 (3, 3) (0, 0)]
(2.0,2.0)

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

Недостаточно материалов в курсе? Хочется знать больше? Ниже несколько источников знаний о Haskell, которые я рекомендую! (если есть такая возможность, читайте материалы на английском языке)

Существует также несколько книг и учебников о Haskell (как на английском, так и на русском). Однако, по разным причинам, я не могу порекомендовать какую-либо из них.

Контакты

Вопросы по лекциям? Проблема с выполнением практического задания? Просто хочется обсудить Haskell или функциональное программирование? Пишите!

Общие группы:

Контакты преподавателя: