Most primitive types we use are "too wide" for how we are using them; for example, there are an infinite number of Strings, but we are only using the String (hex!) representation of a 128-bit UUID. This is a huge source of bugs in our programs. This talk will go over the many ways we can reduce these kinds of errors in Scala, such as wrapper types, refined types, type restrictions, and more.
I haven't seen a comprehensive guide to reducing errors from using primitive types, so I want to make one and teach everyone how to avoid the mistakes in the first place. Scala lets us do this in so many (good) ways!
Specifically: compile- and run-time validation of values necessary and sufficient conditions for type safety Scala-specific and non-Scala-specific techniques to encode constraints as types
Adam Rosien is an Associate at Underscore ("The Scala Specialists"), focused on building systems using functional programming. He previously helped various startups in many domains develop back-end systems and implement continuous deployment practices, and also spent five years as a developer at Xerox PARC.
Noel is a consultant at Underscore, where he helps companies succeed with Scala. He is an author of "Essential Scala", "Scala with Cats", and "Creative Scala". He believes Strings are pure evil.