ФП 2MIT осень 2 2018

Материал из CSC Wiki
Перейти к:навигация, поиск

Лекции

Преподаватель: Москвин Денис Николаевич dmoskvin@gmail.com

Программа курса по лекциям

Вопросы к экзамену

Экзамен будет проходить 26.12.2018 в ВШЭ, в ауд. 257 с 10:30 до 16:00. Запись на конкретное время явки осуществляется в этой гугл-табличке. Записаться следует обязательно!

Слайды

Лекция 1. Лямбда-исчисление 01.11.2018 (чт)

Лекция 2. Рекурсия и редукция 08.11.2018 (чт)

Лекция 3. Просто типизированное лямбда-исчисление 12.11.2018 (пн)

Лекция 4. Введение в Haskell 15.11.2018 (чт)

Лекции 5 и 5a. Программирование на Haskell 19.11.2018 (пн)

Лекция 6. Классы типов 22.11.2018 (чт)

Лекция 7. Свертки 26.11.2018 (пн)

Лекция 8. Аппликативные функторы 29.11.2018 (чт)

Лекция 9. Использование аппликативных функторов 01.12.2018 (сб)

Лекция 10. Монады 03.12.2018 (пн)

Лекция 11. Стандартные монады 06.12.2018 (чт)

Лекция 12. Трансформеры монад 10.12.2018 (пн)

Лекция 13. Алгоритм вывода типов 10.12.2018 (пн)

Лекция 14. Рекурсивные типы 13.12.2018 (чт)

Лекция 15. Молнии и линзы 17.12.2018 (пн)

Полезные ссылки

Hoogle

Typeclassopedia

Haskell 2010 Language Report

Практика Москвин

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

Таблица с результатами Окончательные результаты появятся в ней после последнего дедлайна 19.12.2018 23:59.

Проценты переводятся в баллы следующей функцией

score :: Int -> Int
score proc
 | proc < 58 = 0
 | proc > 98 = 10
 | otherwise = ( proc - 58) `div` 4

Материалы для практик

Практика 1. Чистое лямбда-исчисление как язык программирования 01.11.2018 (чт)

ДЗ 1. Исходник в TeX Напоминаю, что к домашнему заданию #1 добавлены две последние задачи с практики: доказать, что реализации сложения и умножения действительно выполняют соответствующую операцию. Выберете любые три из имеющихся, но обе операции обязательно должны присутствовать. По баллу за доказательство.

Мягкий дедлайн 07.11.2018 22:00. При наличии ошибок можно 1 раз переделать до жесткого дедлайна. Жесткий дедлайн 08.11.2018 12:10. Решения, присланные после этого срока, не проверяются.


Практика 2. Рекурсия и редукция 08.11.2018 (чт)

ДЗ 2. Исходник в TeX Мягкий дедлайн 11.11.2018 22:00. При наличии ошибок можно 1 раз переделать до жесткого дедлайна. Жесткий дедлайн 12.11.2018 12:10. Решения, присланные после этого срока, не проверяются.


Практика 3. Просто типизированное лямбда-исчисление 12.11.2018 (пн)

ДЗ 3. Исходник в TeX Мягкий дедлайн 14.11.2018 22:00. При наличии ошибок можно 1 раз переделать до жесткого дедлайна. Жесткий дедлайн 15.11.2018 12:10. Решения, присланные после этого срока, не проверяются.


Практика 4. Введение в Haskell 15.11.2018 (чт)

Практика 5. Программирование на Haskell 19.11.2018 (пн)

Практика 6. Классы типов 22.11.2018 (чт)

Практика 7. Полугруппы, моноиды, свертки 26.11.2018 (пн)

Практика 8. Аппликативные функторы 29.11.2018 (чт)

Практика 9. Траверсы, парсеры, моноидальные функторы 01.12.2018 (сб)

Практика 10. Монады 03.12.2018 (пн)

Практика 11. Стандартные монады 06.12.2018 (чт)

Практика 12. Трансформеры монад 10.12.2018 (пн)

Практика 13. Алгоритм вывода типов 10.12.2018 (пн)

Практика 14. Рекурсивные типы 13.12.2018 (чт)

Практика 15. Молнии и линзы исходник для практики 17.12.2018 (пн) Таймс, Белые доски, 12:10-13:30

Практика 16. Тестирование 17.12.2018 (пн) Таймс, Белые доски, 13:40-15:00

Haskell Platform

Начиная с четвертого занятия, то есть с 15.11.2018, мы приступим к изучению языка Haskell. В связи с этим вам следует установить подходящую среду разработки. Для Haskell такой средой является Haskell Platform - набор инструментов, пакетов и библиотек обеспечивающих эффективность и удобство разработки программного обеспечения.

Для установки Haskell Platform нужно перейти по ссылке https://www.haskell.org/platform/ и выбрать версию подходящую для вашей операционной системы (Linux, Windows, Mac) и аппаратной платформы.

В состав Haskell Platform не входит редактор исходного кода. Вы можете пользоваться любым удобным для вас текстовым редактором. Желательно, конечно, чтобы он был предназначен для редактирования кода программ и имел подсветку синтаксиса для языка Haskell.

По возможности стоит выполнить еще одну полезную настройку редактора: автоматическую замену символа табуляции на пробелы. Дело в том, что в Haskell размер отступов имеет важное значение для группировки частей программ, а настройки вашего редактора относительно визуального сдвига при табуляции могут не совпадать с представлениями компилятора о размере этого сдвига. Это может привести к неожиданным ошибкам компиляции. Если вы все же хотите активно использовать символ табуляции, а ваш редактор не поддерживает его замену на пробелы, настоятельно рекомендуем самостоятельно изучить принятые в Haskell правила его трансляции.

Альтернативный (по сравнению с Haskell Platform) способ работы с тем же самым компилятором GHC - stack (https://www.haskell.org/downloads). Можете пользоваться им (на свой страх и риск), он несколько более гибок при практической работе над проектами, но требует большего количества ручных настроек.


Домашние задания на stepik.org

Для выполнения домашних заданий по Haskell следует:

Если вы ранее не обучались на Stepik, зарегистрироваться на https://stepik.org/accounts/signup/ Настоятельная просьба - указать идентификационные данные, позволяющие опознавать вас без сложных исследований.

Перейти по ссылке-приглашению на курс: https://stepik.org/invitation/29fc9c688d05f02ca0d00dea440d1957a74de02a/ (ВНИМАНИЕ, ссылка была изменена. Предыдущая давала слишком много прав.)

Модули с текущим ДЗ будут становиться доступными по мере прохождения курса, дедлайны будут видны там же.

Практика Жаворонков

Табличка с результатами

Контакты:

Материалы с занятий и домашние задания:

Правила игры и прочее

Сдача домашних заданий

  • Первые три -- мне на почту. Формат -- pdf(LaTeX)
  • Следующие -- в виде hs-исходника с заполненными пробелами(выпиленными undefined), опять же мне на почту

Дедлайны

  • Мягкий -- указан в строке с соответствующим заданием. Если присылаете до него -- я смотрю, отвечаю и можно прислать исправления один раз до жесткого дедлайна.
  • Жесткий -- наступает через сутки после мягкого. Присылать до него можно и нужно, я не снижаю баллы, но исправления уже не принимаются
  • Решения, присланные после жесткого дедлайна -- не оцениваются.