Спецкурс "Введение в функциональное программирование" в УрФУ в 2020.
https://www.haskell.org/platform/mac.html или
brew install ghc cabal-install
Также добавьте .cabal/bin
в PATH
:
export PATH=$PATH:~/.cabal/bin
https://www.haskell.org/downloads/linux/
https://www.haskell.org/platform/windows.html.
Проверьте, что установлен компилятор ghc >= 8.2
ghc --version
The Glorious Glasgow Haskell Compilation System, version 8.8.1
Чтобы убедиться, что всё установлено верно, запустите тест:
cd urfu-fp-intro-20
cabal update
cabal new-run spec -- --match "Lecture00"
Вы должны увидеть, что "всё работает":
По любым вопросам можно обратиться к официальной документации или к преподавателям в чате https://teleg.run/urfu_fp_intro_20_chat.
Курс рассчитан на использование редактора с подсветкой кода и терминалом.
При желании можно настроить среду разработки для подсветки типов в редакторе. На это потребуется время и не факт, что все получится, поэтому это опционально.
Для Haskell есть интеграции с разными редакторами, но большинство использует GHC IDE. Пока нет скриптов для установки, поэтому нужно собирать ее вручную, что тоже описано в доке.
Важно — перед установкой выполните команду cabal update
, чтобы подгрузить информацию о доступных пакетах.
После успешной установки ghcide
нужно поставить плагин в VS Code или нужный редактор.
Про IntelliJ IDEA: для IDE от Jetbrains есть плагин для Хаскеля, но он рассчитан на работу со Stack — другим менеджером пакетов, обратите внимание.
Материалы занятий можно найти в src/Lecture*.hs
. В каждом занятии есть материал для изучения и задачи, которые нужно решить.
Для экспериментов вам пригодится интерактивная среда Haskell — GHCI
. Узнать о ней подробнее можно на странице документации. Чтобы выйти из GHCI
используйте команду :quit
.
Многострочные определение задаются при помощи :{
и :}
:
:{
hello name = if name == "John"
then "hello john!"
else "i don't know you"
:}
Чтобы проверить своё решение нужно запустить тесты с помощью cabal
. Например, для запуска тестов третьей лекции нужно выполнить команду:
cabal new-run spec -- --match "Lecture03"
Чтобы проверить, что у вас получилось, не запуская тесты, можно загрузить модуль очередного занятия в ghci
. Например, модуль первого занятия можно загрузить с помощью команды:
ghci src/Lecture01.hs
Если вы внесли какие-то изменения, то нужно обновить модуль в ghci
с помощью команды reload
:
:reload Lecture01
или просто
:r Lecture01
Для сдачи задач вам потребуются базовые навыки работы с git
.
Если до этого вы с ним не работали, можете изучить материалы из kontur-courses/git.
Убедитесь, что у вас проходят все тесты к лекции. Здесь посмотрите, как их запустить.
Создайте отдельную ветку, закоммитив изменения:
git checkout -b lecture01
git add src/Lecture01.hs
git commit -m "add lecture01"
Создайте fork этого репозитория и запушайте в него свои изменения:
git remote add fork [email protected]:<ваш_юзернейм>/urfu-fp-intro-20.git
git push fork lecture01
Fork репозитория достаточно сделать только один раз перед сдачей первой задачи.
После этого создайте pull request, указав ваши имя и фамилию. Если вы делали задания в паре, укажите имена и фамилии обоих.
Поздравляю, вы великолепны. 👌
Неделя | Дата | Тема |
---|---|---|
1 | 27 фев | Введение в Haskell |
2 | 05 мар | Списки и строки |
3 | 12 мар | Лямбда-исчисление (untyped/stlc) |
4 | 19 мар | ADTs |
5 | 26 мар | Ленивость |
6 | 02 апр | 💤 |
7 | 09 апр | Параметрический полиморфизм |
8 | 16 апр | Классы типов |
9 | 23 апр | Структуры данных |
10 | 30 апр | Монады IO и Random |
11 | 07 мая | Остальные монады |
12 | 14 мая | Трансформеры |
13 | 21 мая | Архитектура функциональных приложений |
14 | 28 мая | Type-level programming |
Курс проводится при поддержке компании Typeable и компании СКБ Контур.