Understanding the exact properties that disqualify a data type from being an instance of a given abstraction turns out to be surprisingly helpful
Abstractions such as functor, monads... are often explained by example, which I think is only half of what's needed to build a solid intuition. The other half is counter-examples: things that *aren't* things. This talk intends to fill that void, by going through the list of common abstractions and showing types that are, say, a functor, but not an applicative. While this may sound more like a toy than something useful, understanding the exact properties that disqualify a data type from being an instance of a given abstraction turns out to be surprisingly helpful, and have certainly allowed me to go further in my study of such things.
How Scala 3 addresses concerns around implicits and how implicits work in Scala 3.
How to make Scala more approachable and productive?
A blueprint and approach for building end-to-end, full-stack applications in Scala 3
I'll share a handful of techniques that can help you avoid runtime errors and shift them to the realm of compile time