Type Classes are one of the most powerful abstractions we have at our disposal. They provide abstraction capabilities in static languages commonly held only possible in dynamic languages with duck-typing and monkey-patching. They allows us to write algorithms that are extremely generic and reusable.
They are used on everyday basis in languages that support them for common operations like sorting, comparison etc. They are irreplaceable to library authors. Understanding them pushes our understanding of what is possible to express in software.
You probably won’t need to create your own every day or maybe even every month, but when you do need them, there is no other tool that would get you that far.
Wikipedia defines type class as a type system construct that supports ad hoc polymorphism. That probably doesn’t tell you that much. Maybe you’ve heard that Haskell has them baked in or that Scala supports them as a design pattern. Come to the talk and learn what exactly they are and how they could be useful to you. You’ll learn about structural types as a bonus along the way.
Ivan Kusalic is a Software Engineer working for Nokia HERE in Berlin. He organizes Berlin’s Software Craftsmanship meetup, SoCraTes - International Software Craftsmanship and Testing Conference and Global Day of Coderetreat. He has also organized various meetups and Coderetreats. He speaks regularly at conferences and meetups. Ivan is passionate about well-crafted software, particularly in functional and strongly-typed direction.