In this talk, we will take a tour around the `error` function. Starting from the simple use-cases and ending up with sophisticated yet developer-friendly error messages.
Among the many new features that landed in Scala 3, one of the lesser-known ones is the `compiletime.error` function. This seemingly simple function lets us define custom compile-time errors, bringing us a great leap forward in Scala's ability to provide developer-friendly compile-time safety.
But nothing is without complication. Despite the benefits, to fully utilize the power of the `error` function, for better or for worse, one has to take a deep dive into Scala's novel compile-time programming techniques. And what an exciting dive it is.
In this talk, we will take a tour around the `error` function. Starting from the simple use-cases and ending up with sophisticated yet developer-friendly error messages. Guided by a practical example, we will see how and why we can use the `error` function, as well as the accompanying compile-time programming techniques that will allow our error messages to really shine.
In this talk, we’ll show first the different techniques we can use to apply constraints is our domains. Then, we’ll present Iron, its features, extensions, and integrations. We’ll finish by showcasing a fully integrated constraint-enforcing app.
Let's write a game in Scala Native, for Playdate!
I propose that we can extend Mirrors to operations, and use the most natural DSL of all - plain trait definitions.
Listen to a story of how we have dealt with 201 obstacles allowing us to run multithreaded programs natively!