# Karazin Scala Users' Group Course 2021
# Вопросы к экзамену
1. Конкурентное и параллельное выполнение задач. Процессы, потоки и нити.
2. Пулы потоков: назначение и виды.
3. Метод `map` для произвольного контейнера: сигнатура, особенности использования, если есть таковые.
4. Метод `flatMap` для произвольного контейнера: сигнатура, назначение, особенности использования, если есть таковые.
5. Метод `withFilter` для произвольного контейнера: сигнатура, назначение, особенности использования, если есть таковые.
6. Метод `flatten` для произвольного контейнера: сигнатура и назначение, особенности использования, если есть таковые.
7. Метод `foreach` для произвольного контейнера: сигнатура и назначение, особенности использования, если есть таковые.
8. `for comprehension`: минимальный набор обязтельных методов, поддерживаемые методы, desugaring.
9. Option: назначение, особенности использования.
10. List: назначение, особенности использования.
11. Try: назначение, особенности использования.
12. Future: назначение, особенности использования.
13. Полугруппа: назначение и реализация.
14. Функтор: назначение и реализация.
15. Монада: назначение и реализация.
16. Три закона монадности.
---
17. Полиморфные функции: назначение, особенности сигнатуры и применения.
18. Cats. Аппликативы: назначение и применение.
19. Cats. Validated: назначение и применение.
20. Cats. Reader Monad: назначение и применение.
21. Cats. Writer Monad: назначение и применение.
22. Cats. State Monad: назначение и применение.
23. Просто типизированное λ-исчисление: типизация по Черчу, и по Карри.
24. Исчисление естественного вывода (в секвенциальной форме).
25. Сохранение типа при β-редукции.
26. Соответствие Карри-Ховарда.
27. Понятие сильной и слабой нормализуемости λ-термов. Нормализуемость в просто типизированном λ-исчислении.