FP2021

CheatSheat с базовыми понятиями

Основные сигнатуры

Навигация по билетам:

Теория:

1-3

4. Кодирование булевых значений, кортежей в чистом бестиповом λ-исчислении

5. Кодирование чисел Чёрча в чистом бестиповом λ-исчислении. Арифметические операции над ними

6. Теорема о неподвижной точке. Y-комбинатор. Решение рекурсивных уравнений на термы

7. Редексы. Одношаговая и многошаговая редукция. Нормальная форма. Редукционные графы

8. Теорема Чёрча-Россера и её cледствия

9. Cтратегии редукции. Теорема о нормализации. Механизмы вызова в функциональных языках

10. Функция предшествования для чисел Чёрча. Комбинатор примитивной рекурсии

11-12

13. Свойства систем просто типизированного λ-исчисления

14. Связь между системами Карри и Чёрча. Проблемы разрешимости. Сильная и слабая нормализация.

15. Понятие главного (наиболее общего) типа. Подстановки типа и их композиция. Унификаторы.

16. Алгоритм унификации

17. Алгоритм построения системы ограничений

18. Главная пара и главный тип. Теорема Хиндли-Милнера

19. Обобщения алгоритма Хиндли-Милнера. let-полиморфизм и его ограничения

  1. В main есть черновик, вместо него появится pdf и ссылка здесь

21. Катаморфизмы

22. Анаморфизмы и гилеморфизмы

23. Зипперы (молнии). Контексты с дыркой.

24. Линзы ван Лаарховена.

Haskell:

1. Основы программирования на Haskell. Связывание. Рекурсия. Базовые конструкции языка

2. Основные встроенные типы языка Haskell. Система модулей. Частичное применение, каррирование.

3. Операторы и их сечения в Haskell. Бесточечный стиль.

4. Ошибки. Основание. Строгие и нестрогие функции. Ленивое и энергичное исполнение.

5. Алгебраические типы данных. Сопоставление с образцом, его семантика.

6. Объявления type и newtype. Метки полей.

7. Списки, стандартные функции для работы с ними. Генерация (выделение) списков.

8-10

11. Полугруппы и моноиды. Представители класса типов Monoid.

12. Свёртки списков. Правая и левая свёртки. Энергичные версии. Развертки.

13. Класс типов Foldable и его представители.

14. Класс типов Functor и его представители.

15. Класс типов Applicative и его представители

16. Классы типов Alternative и MonadPlus и их представители.

17. Аппликативные парсеры.

18. Класс типов Traversable и его представители.

19. Монады. Класс типов Monad. Законы для монад. do-нотация.

20. Класс типов MonadFail, его история и представители

21. Стандартные монады: Maybe и списки.

(Если у вас останется время перед ответом, советую посмотреть в СheatSheat, там очень подробно расписаны монады)

22. Ввод-вывод в чистых языках. Монада IO. Взаимодействие с файловой системой

23-26. Монада Reader, Writer, State, Except

27. Мультипараметрические классы типов. Роль классов MonadReader, MonadWriter, MonadState и MonadError в mtl.

28. Трансформеры монад. Библиотеки transformers и mtl и их связь.