<?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=Haskell_24</id>
	<title>Haskell 24 - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wikicshse.ru/index.php?action=history&amp;feed=atom&amp;title=Haskell_24"/>
	<link rel="alternate" type="text/html" href="https://wikicshse.ru/index.php?title=Haskell_24&amp;action=history"/>
	<updated>2026-06-06T13:18:38Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wikicshse.ru/index.php?title=Haskell_24&amp;diff=318&amp;oldid=prev</id>
		<title>imported&gt;Drubin: Перенос дз1</title>
		<link rel="alternate" type="text/html" href="https://wikicshse.ru/index.php?title=Haskell_24&amp;diff=318&amp;oldid=prev"/>
		<updated>2024-03-10T18:11:58Z</updated>

		<summary type="html">&lt;p&gt;Перенос дз1&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Промышленное программирование на Haskell, часть 1 ==&lt;br /&gt;
&lt;br /&gt;
Весенний курс по выбору для студентов 4 курса ФКН ВШЭ.&lt;br /&gt;
&lt;br /&gt;
=== Команда курса ===&lt;br /&gt;
&lt;br /&gt;
Лектор: Павел Соколов aka [https://t.me/TurtlePU @TurtlePU].&lt;br /&gt;
&lt;br /&gt;
Семинарист: Илья Костюченко aka [https://t.me/ilyakooo0 @ilyakooo0].&lt;br /&gt;
&lt;br /&gt;
Ассистент: Даниил Рубин aka [https://t.me/supremeSwings @supremeSwings].&lt;br /&gt;
&lt;br /&gt;
=== Ссылки ===&lt;br /&gt;
&lt;br /&gt;
Канал в телеграм: https://t.me/+Is4I3YPaBWk3NjIy&lt;br /&gt;
&lt;br /&gt;
Чат в телеграм: https://t.me/+lcim6Ukmojc5ZGUy&lt;br /&gt;
&lt;br /&gt;
Материалы курса: https://github.com/Haskell-HSE&lt;br /&gt;
&lt;br /&gt;
Записи лекций и семинаров: https://disk.yandex.ru/d/6R3S8bSEkRoE8Q&lt;br /&gt;
&lt;br /&gt;
Таблица с оценками: TBD&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 stack 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 stack 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 плагин]. Настройка: TBD&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;
=== Лекции, семинары ===&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Лекция 05.02&amp;#039;&amp;#039;&amp;#039;. Синтаксис. Ленивые вычисления. Типы данных. Классы типов. [https://github.com/Haskell-HSE/haskell-lectures-2024/blob/main/1.Intro.md Конспект]. [ Запись].&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Семинар 07.02&amp;#039;&amp;#039;&amp;#039;. Не состоялся.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Лекция 12.02&amp;#039;&amp;#039;&amp;#039;. Законы классов типов. Классы Semigroup, Monoid, Foldable, Functor, Applicative, Monad. Тестирование свойств. [ Конспект]. [https://disk.yandex.ru/d/6R3S8bSEkRoE8Q/Лекция%202024-02-12T13-19-29Z.mp4 Запись].&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Семинар 14.02&amp;#039;&amp;#039;&amp;#039;. Классы типов. Моноиды. Foldable. Map. [https://github.com/ilyakooo0/production-haskell/tree/dd8560938a15da072a1e1c17b1a80cb9d22e1920/seminars/1 Материалы]. [https://disk.yandex.ru/d/6R3S8bSEkRoE8Q/Семинар%2014.02.mkv Запись].&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Лекция 19.02&amp;#039;&amp;#039;&amp;#039;. Примеры монад: Maybe, Either, Reader, Writer, State. Монада парсера. Класс Alternative. [ Конспект]. [https://disk.yandex.ru/d/6R3S8bSEkRoE8Q/Лекция%202024-02-19.mp4 Запись].&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Семинар 21.02&amp;#039;&amp;#039;&amp;#039;. TBA. [ Материалы]. [ Запись].&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Лекция 26.02&amp;#039;&amp;#039;&amp;#039;. TBA. [ Конспект]. [ Запись].&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Семинар 28.02&amp;#039;&amp;#039;&amp;#039;. TBA. [ Материалы]. [ Запись].&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Лекция 04.03&amp;#039;&amp;#039;&amp;#039;. TBA. [ Конспект]. [ Запись].&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Семинар 06.03&amp;#039;&amp;#039;&amp;#039;. TBA. [ Материалы]. [ Запись].&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Лекция 11.03&amp;#039;&amp;#039;&amp;#039;. TBA. [ Конспект]. [ Запись].&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Семинар 13.03&amp;#039;&amp;#039;&amp;#039;. TBA. [ Материалы]. [ Запись].&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Лекция 18.03&amp;#039;&amp;#039;&amp;#039;. TBA. [ Конспект]. [ Запись].&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Семинар 20.03&amp;#039;&amp;#039;&amp;#039;. TBA. [ Материалы]. [ Запись].&lt;br /&gt;
&lt;br /&gt;
=== Домашние задания ===&lt;br /&gt;
&lt;br /&gt;
Практические задания по пройденным темам в виде мини-проектов stack. За каждое домашнее задание можно получить до 12 баллов.&lt;br /&gt;
&lt;br /&gt;
* [https://classroom.github.com/a/uTxdKUjY Домашнее задание 1]. Дедлайн &amp;#039;&amp;#039;&amp;#039;11 марта (пн) в 23:59&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* [ Домашнее задание 2]. Дедлайн &amp;#039;&amp;#039;&amp;#039;TBA&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* [ Домашнее задание 3]. Дедлайн &amp;#039;&amp;#039;&amp;#039;TBA&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Проект ===&lt;br /&gt;
&lt;br /&gt;
В качестве проекта предлагается доработать одно из домашних заданий следующим образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Расширить функционал приложения, выполненного в домашнем задании (масштаб работ нужно обсудить с лектором либо с семинаристом) (4 балла из 10);&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Покрыть код тестами (2 балла из 10);&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Не использовать &amp;lt;code&amp;gt;unsafe&amp;lt;/code&amp;gt;, если это не было обговорено заранее (2 балла из 10);&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Проанализировать производительность приложения (1 балл из 10; 2 балла, если в проекте разрешён unsafe);&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Поддерживать чистоту кода (1 балл из 10; 2 балла, если в проекте разрешён unsafe):&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;предпочитать использовать готовые комбинаторы из стандартной библиотеки вместо явного паттерн-матчинга стандартных типов данных;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;предпочитать point-free стиль, где это разумно;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;предпочитать пользоваться подсказками HLint;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;код должен быть консистентно отформатирован, неиспользованных импортов быть не должно;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;если в проекте разрешён unsafe, он должен быть отделён от остального приложения какой-то безопасной абстракцией.&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;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Возможны групповые проекты. Также возможны инициативные темы; они обсуждаются индивидуально, но разбалловка остаётся такой же.&lt;br /&gt;
&lt;br /&gt;
Проект должен быть оформлен в приватном репозитории на github. Оценка выставляется за проект в том состоянии, в котором находилась default ветка репозитория (скорее всего main либо master) &amp;#039;&amp;#039;&amp;#039;в полночь перед защитой&amp;#039;&amp;#039;&amp;#039;. Либо можно оформить сдачу в виде пулл-реквеста.&lt;br /&gt;
&lt;br /&gt;
Защита проекта проводится во время весенней сессии.&lt;br /&gt;
&lt;br /&gt;
=== Оценивание ===&lt;br /&gt;
&lt;br /&gt;
Итог = Округление(min(10, 0.64 * ДЗ + 0.36 * ПР)),&lt;br /&gt;
&lt;br /&gt;
где ДЗ – средняя оценка за все домашние задания, ПР – оценка за проектную работу.&lt;br /&gt;
&lt;br /&gt;
Округление арифметическое.&lt;br /&gt;
&lt;br /&gt;
== Дополнительная литература ==&lt;br /&gt;
&lt;br /&gt;
* Will Kurt – Get Programming with Haskell&lt;br /&gt;
* Bryan O&amp;#039;Sullivan, Don Stewart, John Goerzen – Real World Haskell&lt;br /&gt;
* Alexander Granin – Functional Design and Architecture&lt;br /&gt;
* Sandy Maguire – Algebra-Driven Design&lt;/div&gt;</summary>
		<author><name>imported&gt;Drubin</name></author>
	</entry>
</feed>