# 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. Понятие сильной и слабой нормализуемости λ-термов. Нормализуемость в просто типизированном λ-исчислении.