<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_22-23</id>
	<title>Функциональное программирование 22-23 - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_22-23"/>
	<link rel="alternate" type="text/html" href="https://wikicshse.ru/index.php?title=%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_22-23&amp;action=history"/>
	<updated>2026-06-06T11:25:03Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wikicshse.ru/index.php?title=%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_22-23&amp;diff=2485&amp;oldid=prev</id>
		<title>imported&gt;Edashkov: /* Листки и код для семинаров */</title>
		<link rel="alternate" type="text/html" href="https://wikicshse.ru/index.php?title=%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_22-23&amp;diff=2485&amp;oldid=prev"/>
		<updated>2022-12-26T21:43:41Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Листки и код для семинаров&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Функциональное программирование ==&lt;br /&gt;
&lt;br /&gt;
Курс по выбору для студентов 3 и 4 курса ФКН ВШЭ, 1 и 2 модуль 2022 г. Функциональное программирование (ФП) представляет собой теоретически изящный, выдержавший проверку временем на практике и оказавший заметное влияние на технологии программирования вообще подход к созданию ПО. Курс посвящен основам ФП  в целом и популярного языка Haskell в частности. Попутно сообщаются начальные сведения из области лямбда-исчислений, теории типов, теории категорий.&lt;br /&gt;
&lt;br /&gt;
== Преподаватели ==&lt;br /&gt;
&lt;br /&gt;
Лектор и семинарист: Евгений Дашков, ТГ: @edashkov, edashkov@gmail.com.&lt;br /&gt;
&lt;br /&gt;
Семинарист: Павел Соколов, ТГ: [https://t.me/TurtlePU @TurtlePU].&lt;br /&gt;
&lt;br /&gt;
Учебный ассистент: Олег Мкртчян, ТГ: @unwishfulthinking.&lt;br /&gt;
&lt;br /&gt;
== Текущая успеваемость ==&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/e/2PACX-1vTGKTtVAvjvCheX-dky3tB_W-GQnKunxccajwMziHquQvTDA7pqOGOZUfajFtO20dQhPkx0rurScFju/pubhtml https://docs.google.com/spreadsheets/d/e/2PACX-1vTGKTtVAvjvCheX-dky3tB_W-GQnKunxccajwMziHquQvTDA7pqOGOZUfajFtO20dQhPkx0rurScFju/pubhtml]&lt;br /&gt;
&lt;br /&gt;
== Setting up ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Если вы пользуетесь Windows, установите WSL2, если ещё не.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Установите [https://www.haskell.org/ghcup/ ghcup] &amp;amp;mdash; скачайте [https://downloads.haskell.org/~ghcup/ бинарный файл] сами&lt;br /&gt;
    либо введите одну любимую команду:&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt; &amp;#039;&amp;#039;&amp;#039;MacOS&amp;#039;&amp;#039;&amp;#039;: &amp;lt;pre&amp;gt;brew install ghcup&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt; &amp;#039;&amp;#039;&amp;#039;Arch&amp;#039;&amp;#039;&amp;#039;-based distros: &amp;lt;pre&amp;gt;yay -S ghcup-hs-bin&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt; &amp;#039;&amp;#039;&amp;#039;WSL2&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;MacOS&amp;#039;&amp;#039;&amp;#039; &amp;gt;= 10.13, &amp;#039;&amp;#039;&amp;#039;Linux&amp;#039;&amp;#039;&amp;#039;: &amp;lt;pre&amp;gt;curl --proto &amp;#039;=https&amp;#039; --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt; &amp;#039;&amp;#039;&amp;#039;Windows Powershell&amp;#039;&amp;#039;&amp;#039; (cringe): Команда доступна по [https://www.haskell.org/ghcup/install/#installation ссылке]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Убедитесь, что путь до места установки &amp;lt;code&amp;gt;ghcup&amp;lt;/code&amp;gt; содержится в &amp;lt;code&amp;gt;$PATH&amp;lt;/code&amp;gt; &amp;amp;mdash; запустите &amp;lt;code&amp;gt;ghcup list&amp;lt;/code&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Установите &amp;#039;&amp;#039;&amp;#039;&amp;lt;code style=&amp;quot;background-color:black;color:rgb(0,255,0)&amp;quot;&amp;gt;recommended&amp;lt;/code&amp;gt;&amp;#039;&amp;#039;&amp;#039; версии компилятора, пакетного менеджера и языкового сервера:&amp;lt;pre&amp;gt;&lt;br /&gt;
ghcup install ghc recommended&lt;br /&gt;
ghcup install cabal recommended&lt;br /&gt;
ghcup install hls recommended&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Убедитесь, что путь &amp;lt;code&amp;gt;~/.ghcup/bin&amp;lt;/code&amp;gt; содержится в &amp;lt;code&amp;gt;$PATH&amp;lt;/code&amp;gt;. При необходимости добавьте этот путь сами.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Создайте символические ссылки на установленные версии программ:&amp;lt;pre&amp;gt;&lt;br /&gt;
ghcup set ghc recommended&lt;br /&gt;
ghcup set cabal recommended&lt;br /&gt;
ghcup set hls recommended&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Настройте LSP client в своей любимой среде разработки:&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Для &amp;#039;&amp;#039;&amp;#039;VS Code&amp;#039;&amp;#039;&amp;#039; есть [https://github.com/haskell/vscode-haskell плагин], он должен обнаружить HLS самостоятельно.&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;В &amp;#039;&amp;#039;&amp;#039;NeoVim&amp;#039;&amp;#039;&amp;#039; настройте [https://github.com/neovim/nvim-lspconfig nvim-lspconfig], он знает про HLS.&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Инструкцию для других сред можно найти [https://haskell-language-server.readthedocs.io/en/latest/configuration.html#configuring-your-editor здесь].&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Опционально &amp;amp;mdash; установите [https://hoogle.haskell.org Hoogle] локально:&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&amp;lt;code&amp;gt;cabal install hoogle&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;&lt;br /&gt;
        Допишите в файл &amp;lt;code&amp;gt;~/.ghci&amp;lt;/code&amp;gt; следующее:&amp;lt;pre&amp;gt;&lt;br /&gt;
:def hoogle \x -&amp;gt; return $ &amp;quot;:!hoogle \&amp;quot;&amp;quot; ++ x ++ &amp;quot;\&amp;quot;&amp;quot;&lt;br /&gt;
:def hdoc \x -&amp;gt; return $ &amp;quot;:!hoogle --info \&amp;quot;&amp;quot; ++ x ++ &amp;quot;\&amp;quot;&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
      &amp;lt;/li&amp;gt;&lt;br /&gt;
      &amp;lt;li&amp;gt;Теперь можно пользоваться Hoogle прямо из ghci с помощью команд &amp;lt;code&amp;gt;:hoogle&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;:hdoc&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Листки и код для семинаров ==&lt;br /&gt;
&lt;br /&gt;
* [https://drive.google.com/file/d/1Vm69QFV5XFgDozPM9hGp1teFdwjUdyLU/view?usp=sharing  Листок 1]&lt;br /&gt;
&lt;br /&gt;
* [https://drive.google.com/file/d/1xFLVoKjOGxooPTP66noHA0KFxosjFkkL/view?usp=sharing  Листок 2]&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/edashkov/hse-fp-22 Лекции и семинары] Е. Дашкова&lt;br /&gt;
&lt;br /&gt;
== Домашние задания ==&lt;br /&gt;
Домашние задания выдаются приблизительно раз в две недели; при выдаче каждого задания указывается срок его сдачи. Все задания письменные. Каждая задача оценивается  0, ½ или 1 баллом. Все задания в целом оцениваются числом:&lt;br /&gt;
&lt;br /&gt;
ДЗ = (сумма полученных баллов за все задачи) / (количество выданных задач).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Набор задач !! colspan=&amp;quot;11&amp;quot; | Срок сдачи&lt;br /&gt;
|-&lt;br /&gt;
| || гр. Дашкова  || гр. Соколова&lt;br /&gt;
|-&lt;br /&gt;
|[https://drive.google.com/file/d/1MBSr_Ryb9Xw7HxYUU1vC6WfMHF_YJh9f/view?usp=sharing ДЗ 1] || 20.09 || 20.09&lt;br /&gt;
|-&lt;br /&gt;
|[https://drive.google.com/file/d/1IK0SZGj78veayMS6_1BS7lT9HncbNwTY/view?usp=sharing ДЗ 2] || 11.10 || 11.10&lt;br /&gt;
|-&lt;br /&gt;
|[https://drive.google.com/file/d/1UuZWdkEQsKpS1xDVXK1WqOy1tWP1KlJC/view?usp=sharing ДЗ 3] || 01.11 || 01.11&lt;br /&gt;
|-&lt;br /&gt;
|[https://drive.google.com/file/d/13XvUC48ga4xjTPbVl1isVI0GIxFT0Y_u/view?usp=share_link ДЗ 4] || 26.11 || 26.11&lt;br /&gt;
|-&lt;br /&gt;
|[https://drive.google.com/file/d/14On7LzhyaasXiKm619EtKy7lqD_g9SF1/view?usp=share_link ДЗ 5] || 20.12 || 20.12&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Срок сдачи задания устанавливается семинаристом группы.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ссылка на классрум&amp;#039;&amp;#039;&amp;#039;: [https://classroom.google.com/c/OTM4MjAyNzk1MTda?cjc=xbblft6 https://classroom.google.com/c/OTM4MjAyNzk1MTda?cjc=xbblft6]&lt;br /&gt;
&lt;br /&gt;
== Контрольная работа ==&lt;br /&gt;
Письменная Контрольная работа проводится в начале второго модуля. Допускается использование собственных записей студента и явно разрешенных локальных справочных систем. Каждая задача оценивается  0, ½ или 1 баллом. Контрольная оцениваются числом:&lt;br /&gt;
&lt;br /&gt;
КР = (сумма полученных баллов за все задачи) / (количество выданных задач).&lt;br /&gt;
&lt;br /&gt;
== Итоговый экзамен ==&lt;br /&gt;
Письменный экзамен проводится в конце курса. Допускается использование собственных записей студента и явно разрешенных локальных справочных систем. Каждая задача оценивается  0, ¼, ½ , ¾ или 1 баллом. Экзамен оценивается числом:&lt;br /&gt;
&lt;br /&gt;
Э = (сумма полученных баллов за все задачи) / (количество выданных задач).&lt;br /&gt;
&lt;br /&gt;
== Индивидуальный проект ==&lt;br /&gt;
При желании студенты согласовывают с семинаристом проект для индивидуальной работы. Также допускается работа в группах до трех человек. Проект представляет собой решение достаточно сложной задачи по программированию и предполагает самостоятельное получение недостающих сведений. Проекты должны быть сданы за день до защиты (до 23:59), то есть как минимум до 15 декабря. За проект выставляется (дробная) оценка ПР от 0 до 1 балла.&lt;br /&gt;
&lt;br /&gt;
==== Некоторые темы для проектов ====&lt;br /&gt;
&lt;br /&gt;
Варианты от Евгения Владимировича:&lt;br /&gt;
&lt;br /&gt;
* Определить кольцо Z[X1, X2, ...] многочленов над Z c произвольным количеством переменных. Должны поддерживаться методы show, +, -, *, а также операции подстановки одного многочлена в другой (в частности, вычисление значения в целых точках) и дифференцирования по произвольной переменной.&lt;br /&gt;
* Определить понятие формулы первого порядка (в заданной сигнатуре) и реализовать алгоритм приведения таких формул к предваренной нормальной форме.&lt;br /&gt;
* Определить понятие пропозициональной формулы и реализовать проверку таких формул на выполнимость с помощью метода резолюций. Метод применим только к КНФ, поэтому еще нужно реализовать полиномиальный алгоритм построения КНФ, «равновыполнимой» данной формуле.&lt;br /&gt;
* Реализуйте «угадывающую машину» К. Шеннона.&lt;br /&gt;
* Вычислите справедливую стоимость опциона методом &amp;quot;двоичного дерева&amp;quot;.&lt;br /&gt;
* Реализуйте игру &amp;quot;Жизнь&amp;quot; на торе с графикой ASCII&lt;br /&gt;
&lt;br /&gt;
Варианты от Паши:&lt;br /&gt;
&lt;br /&gt;
* DSL для rich text-а (а-ля Markdown, возможно, с поддержкой формул)&lt;br /&gt;
* Библиотека для простых символьных вычислений (с упрощением выражений)&lt;br /&gt;
* Бот в телеграм с помощью servant&lt;br /&gt;
* Model checker для простых моделей и формул (с нуля)&lt;br /&gt;
* Автоматическое дифференцирование, линейная регрессия на его основе (с нуля)&lt;br /&gt;
* Консольный роглайк&lt;br /&gt;
* Интерпретатор Scheme&lt;br /&gt;
* Улучшение интерпретатора лямбда-исчисления&lt;br /&gt;
&lt;br /&gt;
Варианты инициативных проектов от некоторых студентов:&lt;br /&gt;
&lt;br /&gt;
* Решение задач на Codeforces на Haskell&lt;br /&gt;
* Crafting Interpreters на Haskell&lt;br /&gt;
* Криптографическая библиотека&lt;br /&gt;
* Raft с нуля&lt;br /&gt;
* Консольный мессенджер&lt;br /&gt;
&lt;br /&gt;
==== Частые Вопросы по проектам ====&lt;br /&gt;
&lt;br /&gt;
===== Какой сложности и объёма должен быть проект? =====&lt;br /&gt;
Зависит от Вашего уровня. Подбирайте задачу, которую Вам самим интересно решать и которую Вы успеете доделать (или сделать осмысленный кусок) к дедлайну.&lt;br /&gt;
&lt;br /&gt;
===== Можно ли брать одну и ту же тему проекта? =====&lt;br /&gt;
Да, можно, главное, чтобы проекты выполнялись самостоятельно. Обмениваться идеями можно, копировать код друг у друга — нет.&lt;br /&gt;
&lt;br /&gt;
===== Можно ли выбирать тему, не предложенную преподавателями? =====&lt;br /&gt;
Да, можно, темы выше — это примерные ориентиры для вдохновения. Можно взять их, можно придумать что-то своё.&lt;br /&gt;
&lt;br /&gt;
===== Как аппрувнуть тему? =====&lt;br /&gt;
Связываетесь со мной (Павлом), я оцениваю совместимость уровня студента до начала прохождения курса и сложности проекта и говорю, подходит ли Вам тема или нужно её отрафинировать.&lt;br /&gt;
&lt;br /&gt;
===== Оценивается ли кодстайл? =====&lt;br /&gt;
Типы всех верхнеуровневых функций должны быть выписаны явно, а пользовательские типы и конструкторы должны иметь понятные, семантические названия. Отступы, именования локальных переменных и т.д. не проверяются.&lt;br /&gt;
&lt;br /&gt;
===== Нужна ли документация проекта? =====&lt;br /&gt;
Haddock не обязателен, но см. комментарий про типы выше&lt;br /&gt;
&lt;br /&gt;
===== В какой форме можно сдать код проекта? =====&lt;br /&gt;
В любом формате, который не предполагает нахождение вашего кода в открытом доступе и который желающие потом смогут собрать с помощью cabal build и запустить с помощью cabal run. При этом ограничений на версию GHC нет.&lt;br /&gt;
&lt;br /&gt;
===== Какой дедлайн сдачи проекта? =====&lt;br /&gt;
С выбором темы желательно определиться до начала сессии, защита будет когда-то во время сессии, возможно, в несколько дней. Код нужно прислать за день (до 23:59) до начала Вашей защиты.&lt;br /&gt;
&lt;br /&gt;
===== Будут ли дополнительные вопросы на понимание кода проекта? =====&lt;br /&gt;
Только в том случае, если мы начнём сомневаться в авторстве проекта.&lt;br /&gt;
&lt;br /&gt;
===== За что производится оценивание проекта? =====&lt;br /&gt;
За навык решения не-тривиальной задачи на Haskell. Если вы решили ощутимую часть задачи, одобренной мной (Павлом), то это полный балл. Опять же, оценивание зависит от Вашего начального уровня до прохождения курса.&lt;br /&gt;
&lt;br /&gt;
===== Как проходит защита? =====&lt;br /&gt;
Скорее всего онлайн. Вы рассказываете, какая у Вас тема, что Вы успели сделать, как устроен код (с высоты птичьего полёта, только основные типы данных, функции и инстансы). Мы можем задать Вам пару вопросов по задаче, возможным расширениям и архитектуре решения. Можно слушать защиты друг друга и задавать свои вопросы, групповые проекты защищаются всей командой сразу.&lt;br /&gt;
&lt;br /&gt;
==== Полезные библиотеки ====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;containers&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;unordered-containers&amp;lt;/code&amp;gt; &amp;amp;mdash; стандартные коллекции.&lt;br /&gt;
* &amp;lt;code&amp;gt;monoidal-containers&amp;lt;/code&amp;gt; &amp;amp;mdash; некоторые стандартные коллекции с в каком-то смысле более правильными инстансами &amp;lt;code&amp;gt;Semigroup&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;Monoid&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;lattices&amp;lt;/code&amp;gt; &amp;amp;mdash; решётки (алгебраическая структура).&lt;br /&gt;
* &amp;lt;code&amp;gt;servant&amp;lt;/code&amp;gt; &amp;amp;mdash; генератор API для веб-серверов и клиентов.&lt;br /&gt;
* &amp;lt;code&amp;gt;telegram-bot-simple&amp;lt;/code&amp;gt; &amp;amp;mdash; немного устаревшая библиотека для ботов в Телеграм.&lt;br /&gt;
* &amp;lt;code&amp;gt;haskeline&amp;lt;/code&amp;gt; &amp;amp;mdash; фреймворк для REPL интерфейсов.&lt;br /&gt;
* &amp;lt;code&amp;gt;ansi-terminal&amp;lt;/code&amp;gt; &amp;amp;mdash; для редактирования вывода (полезно для роглайков и Game of Life).&lt;br /&gt;
* &amp;lt;code&amp;gt;megaparsec&amp;lt;/code&amp;gt; &amp;amp;mdash; фреймворк для написания парсеров.&lt;br /&gt;
* &amp;lt;code&amp;gt;async&amp;lt;/code&amp;gt; &amp;amp;mdash; асинхронное IO.&lt;br /&gt;
* &amp;lt;code&amp;gt;data-fix&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;free&amp;lt;/code&amp;gt; &amp;amp;mdash; типы данных для обобщённой рекурсии.&lt;br /&gt;
* &amp;lt;code&amp;gt;QuickCheck&amp;lt;/code&amp;gt; &amp;amp;mdash; фреймворк для property-based тестирования.&lt;br /&gt;
* &amp;lt;code&amp;gt;HUnit&amp;lt;/code&amp;gt; &amp;amp;mdash; фреймворк для юнит-тестов.&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
[https://t.me/+0xll5HN3Y1k0ZDRi Группа слушателей курса в ТГ]&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/drive/folders/1Ut4Tv4CkaMhC-8Mqxh4gK5WjaN3LkgUR?usp=sharing Материалы Е.В. Дашкова]&lt;br /&gt;
&lt;br /&gt;
==== Базовые ресурсы ====&lt;br /&gt;
&lt;br /&gt;
[https://www.haskell.org/ Сайт языка]&lt;br /&gt;
&lt;br /&gt;
[https://docs.haskellstack.org/en/stable/README/ Haskell Tool Stack]&lt;br /&gt;
&lt;br /&gt;
[https://www.haskell.org/cabal/ Информация про Cabal]&lt;br /&gt;
&lt;br /&gt;
[https://www.haskell.org/hoogle/ Hoogle]&lt;br /&gt;
&lt;br /&gt;
[https://hackage.haskell.org/ Hackage]&lt;br /&gt;
&lt;br /&gt;
[http://hackage.haskell.org/package/base/ Стандартная библиотека языка Haskell на Hackage]&lt;br /&gt;
&lt;br /&gt;
==== Книги и статьи ====&lt;br /&gt;
&lt;br /&gt;
[http://learnyouahaskell.com/ Learn You a Haskell for Great Good]&lt;br /&gt;
&lt;br /&gt;
[http://book.realworldhaskell.org/read/ Real World Haskell]&lt;br /&gt;
&lt;br /&gt;
[https://mathtrielhighschool.files.wordpress.com/2011/08/number-theory.pdf Basic Simple Type Theory]&lt;br /&gt;
&lt;br /&gt;
[https://disi.unitn.it/~bernardi/RSISE11/Papers/curry-howard.pdf Lectures on the Curry-Howard Isomorphism]&lt;br /&gt;
&lt;br /&gt;
[https://doc.lagout.org/programmation/Functional%20Programming/Chris_Okasaki-Purely_Functional_Data_Structures-Cambridge_University_Press%281998%29.pdf Purely Functional Data Structures.]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Нет в открытом доступе&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[https://www.cs.nott.ac.uk/~pszgmh/pih.html Programming in Haskell by Graham Hutton]&lt;br /&gt;
&lt;br /&gt;
[https://mitpress.mit.edu/9780262660716/ Basic Category Theory for Computer Scientists by Benjamin C. Pierce]&lt;br /&gt;
&lt;br /&gt;
== Оценки ==&lt;br /&gt;
&lt;br /&gt;
Итоговая оценка получается так:&lt;br /&gt;
&lt;br /&gt;
Итог = ОКРУГЛ (2 * ПР + 2 * КР + 3 * ДЗ + 3 * Э).&lt;br /&gt;
&lt;br /&gt;
Округление производится к ближайшему целому, притом что полуцелые значения округляются вверх.&lt;/div&gt;</summary>
		<author><name>imported&gt;Edashkov</name></author>
	</entry>
</feed>