«Смерть Tagless Final» Джона А. Де Гоэса
Ziverge
0:00 / 0:00
«Смерть Tagless Final» Джона А. Де Гоэса
15 439 просмотров · 5 лет назад
Ziverge
4,29 тыс. подписчиков
15 439 просмотров · 5 лет назад
Final Tagless. Эта тема вселяет страх в сердца разработчиков Scala по всему миру — и не без оснований. Final Tagless позволяет разработчикам создавать компонуемые предметно-ориентированные языки (DSL), моделирующие взаимодействие с внешним миром. Программы, написанные в стиле Final Tagless, могут быть протестированы детерминированно и проанализированы на этапе компиляции. Однако этот метод требует сложных, ограничивающих компилятор типов высшего порядка, таких как `F[_]`, и повсеместных, невыводимых ограничений контекста, таких как `F[_]: Concurrent: Console: Logging`. Многие, изучая Final Tagless, задавались вопросом, действительно ли все эти уровни сложности и формальности стоят тех преимуществ.
В этой презентации Джон А. Де Гоэс предлагает доступное и понятное введение в Final Tagless, объясняя, что это такое и какую проблему он призван решить. Джон показывает, что, хотя Final Tagless проще в использовании, чем свободные монады, этот метод страдает от множества недостатков, которые отталкивают разработчиков от функционального программирования на Scala. Затем Джон представляет новый подход, который разделяет некоторые преимущества final tagless, но при этом является идиоматичным для Scala, простым для объяснения, не требует сложной системы типов, обеспечивает безупречный вывод типов и прекрасно работает как в Scala 2.x, так и в Scala 3.
Присоединяйтесь к Джону на увлекательном вечере, где вы научитесь писать функциональный код на Scala, который легко тестировать и легко анализировать — и все это без сложностей, связанных с free monads или final tagless.