We all have pretty little things laying around in our codebases, yet, we seldom give them the same love
I'll share a handful of techniques that can help you avoid runtime errors and shift them to the realm of compile time
Understanding the exact properties that disqualify a data type from being an instance of a given abstraction turns out to be surprisingly helpful