Final tagless. The topic strikes fear into the hearts of Scala developers everywhere—and not without reason. Final tagless allows developers to build composable Domain Specific Languages (DSLs) that model interaction with the outside world. Programs written using the final tagless style can be tested deterministically and reasoned about at compile-time. Yet the technique requires confusing, compiler-choking higher-kinded types, like `F[_]`, and pervasive, non-inferable context bounds like `F[_]: Concurrent: Console: Logging`. Many have looked at final tagless and wondered if all the layers of complexity and ceremony are really worth the benefits.
In this all-original presentation, created exclusively for Scala Matters, John A. De Goes provides a gentle and accessible introduction to final tagless, explaining what it is and the problem it intends to solve. John shows that while final tagless is easier to use than free monads, the technique suffers from a litany of drawbacks that push developers away from functional programming in Scala. John then introduces a novel approach that shares some of the benefits of final tagless, but which is idiomatic Scala, easy to explain, doesn’t need any complex type machinery, provides flawless type inference, and works beautifully across Scala 2.x and Scala 3.
Come join John for an evening of fun as you learn how to write functional code in Scala that's easy to test and easy to reason about—all without the complexity of free monads or final tagless.
Come on down to CodeNode to learn from the best, share your ideas and join our vibrant community! Be sure to sign-in early to grab a drink and meet other attendees in a casual, relaxed setting.
18:30-19:00 Sign-in and get settled
19:00-19:45 John's presentation
YOU MAY ALSO LIKE:
- Lightbend Akka for Scala - Professional (in London on 11th - 12th November 2019)
- Advanced Scala with Dick Wall (in London on 9th - 11th December 2019)
- Clojure eXchange 2019 (in London on 2nd - 3rd December 2019)
- Scala eXchange London 2019 (in London on 12th - 13th December 2019)
- Code Kata: Yilin Wei - Optics with Monocle (in London on 22nd October 2019)
- Keynote by Konrad Kokosa: What’s New in .NET Core 3.0 and .NET 5.0 for Performance and Memory-Aware Folks? (in London on 29th October 2019)
- Going Multicloud with Serverless (SkillsCast recorded in October 2019)
- Park Bench Panel (SkillsCast recorded in October 2019)
The Death of Final Tagless
John is a functional programming, author, speaker, entrepreneur, and long-time software architect and engineer. He loves startups, technology, science, software engineering, fitness, and his family.