Функциональное программирование 24-25 — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Итоговый экзамен)
(Индивидуальный проект)
Строка 116: Строка 116:
 
-->
 
-->
  
== Индивидуальный проект ==
+
== Самостоятельная работа (мини-проект) ==
 +
 
 +
<!--
 
При желании студенты согласовывают с семинаристом проект для индивидуальной работы. Также допускается работа в группах до трех человек. Проект представляет собой решение достаточно сложной задачи по программированию и предполагает самостоятельное получение недостающих сведений. Проекты должны быть сданы за день до защиты (до 23:59), то есть как минимум до 20 декабря. За проект выставляется (дробная) оценка ПР от 0 до 1 балла.
 
При желании студенты согласовывают с семинаристом проект для индивидуальной работы. Также допускается работа в группах до трех человек. Проект представляет собой решение достаточно сложной задачи по программированию и предполагает самостоятельное получение недостающих сведений. Проекты должны быть сданы за день до защиты (до 23:59), то есть как минимум до 20 декабря. За проект выставляется (дробная) оценка ПР от 0 до 1 балла.
  
Строка 199: Строка 201:
 
* <code>QuickCheck</code> &mdash; фреймворк для property-based тестирования.
 
* <code>QuickCheck</code> &mdash; фреймворк для property-based тестирования.
 
* <code>HUnit</code> &mdash; фреймворк для юнит-тестов.
 
* <code>HUnit</code> &mdash; фреймворк для юнит-тестов.
 +
 +
-->
  
 
== Материалы ==
 
== Материалы ==

Версия 02:36, 10 сентября 2024

Функциональное программирование

Курс по выбору для студентов 3 и 4 курса ФКН ВШЭ, 1 и 2 модуль 2024 г. Функциональное программирование (ФП) представляет собой теоретически изящный, выдержавший проверку временем на практике и оказавший заметное влияние на технологии программирования вообще подход к созданию ПО. Курс посвящен основам ФП в целом и популярного языка Haskell в частности. Попутно сообщаются начальные сведения из области лямбда-исчислений, теории типов, теории категорий.

Преподаватели

Лектор и семинарист: Евгений Дашков, ТГ: @edashkov, edashkov@gmail.com.

Семинарист: Павел Соколов, ТГ: @TurtlePU.

Учебный ассистент: Ислам Талипов, ТГ: @lishy2.

Текущая успеваемость

[Таблица].

Setting up

  1. Если вы пользуетесь Windows, установите WSL2, если ещё не.
  2. Установите ghcup — скачайте бинарный файл сами либо введите одну любимую команду:
    • MacOS:
      brew install ghcup
    • Arch-based distros:
      yay -S ghcup-hs-bin
    • WSL2, MacOS >= 10.13, Linux:
      curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
    • Windows Powershell (cringe): Команда доступна по ссылке
  3. Убедитесь, что путь до места установки ghcup содержится в $PATH — запустите ghcup list.
  4. Установите recommended версии компилятора, пакетного менеджера и языкового сервера:
    ghcup install ghc recommended
    ghcup install cabal recommended
    ghcup install hls recommended
  5. Убедитесь, что путь ~/.ghcup/bin содержится в $PATH. При необходимости добавьте этот путь сами.
  6. Создайте символические ссылки на установленные версии программ:
    ghcup set ghc recommended
    ghcup set cabal recommended
    ghcup set hls recommended
  7. Настройте LSP client в своей любимой среде разработки:
    • Для VS Code есть плагин, он должен обнаружить HLS самостоятельно.
    • В NeoVim настройте nvim-lspconfig, он знает про HLS.
    • Инструкцию для других сред можно найти здесь.
  8. Опционально — установите Hoogle локально:
    1. cabal install hoogle
    2. Допишите в файл ~/.ghci следующее:
      :def hoogle \x -> return $ ":!hoogle \"" ++ x ++ "\""
      :def hdoc \x -> return $ ":!hoogle --info \"" ++ x ++ "\""
    3. Теперь можно пользоваться Hoogle прямо из ghci с помощью команд :hoogle и :hdoc

Листки и код для семинаров

Домашние задания

Контрольная работа

Итоговый экзамен

Самостоятельная работа (мини-проект)

Материалы

Группа слушателей курса в ТГ

Материалы Е.В. Дашкова

Записи лекций Е. В. Дашкова в МФТИ

Базовые ресурсы

Сайт языка

Haskell Tool Stack

Информация про Cabal

Hoogle

Hackage

Стандартная библиотека языка Haskell на Hackage

Книги и статьи

Learn You a Haskell for Great Good

Real World Haskell

Basic Simple Type Theory

Lectures on the Curry-Howard Isomorphism

Purely Functional Data Structures.

Нет в открытом доступе

Programming in Haskell by Graham Hutton

Basic Category Theory for Computer Scientists by Benjamin C. Pierce

Оценки

Итоговая оценка получается так:

Итог = ОКРУГЛ (2 * ПР + 2 * КР + 3 * ДЗ + 3 * Э).

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