Skip to content

cmc-haskell-2018/cmc-haskell-2018.github.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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

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

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

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

Лекции

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

Семинары

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

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

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

  • Базовая (общая) часть:
    • 13 марта — основные типы и функции (только сигнатуры);
    • 20 марта — реализация основных функций;
    • 3 апреля — рабочее приложение.
  • Индивидуальная часть:
    • 17 апреля — основные типы и функции (только сигнатуры);
    • 1 мая — завершённый функционал.

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

Оценка

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

  • работу в семестре на семинарах;
  • выполнение практического задания на Haskell.

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

Haskell Platform

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

  • компилятор GHC (версии 8.2.2);
  • система сборки Cabal;
  • утилита Stack для разработки проектов;
  • стандартные и часто-используемые библиотеки.

Интерпретатор 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, которые я рекомендую! (если есть такая возможность, читайте материалы на английском языке)

  • Learn You a Haskell — это позитивно и понятно изложенный материал, начиная с самых основ и заканчивая введением в интересные вещи.
  • Haskell Wikibook — нечто среднее между справочником и туториалом по языку Haskell. В книге содержатся статьи по базовым и продвинутым темам, включая структуры данных, теорию типов и статьи о производительности программ на Haskell.
  • Haskell Weekly — еженедельная сводка новостей про то, что происходит в сообществе: здесь вы можете узнать о том, что нового происходит с языком, где он применяется, а также о ближайших событиях и даже вакансиях.
  • ruHaskell.org — сайт русскоязычного сообщества Haskell.
  • Functional pearls — некоторые исключительно элегантные функциональные решения различных практических проблем, с использованием Haskell.

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

Контакты

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

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

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

About

Сайт курса «Программирование на Haskell 2018».

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages