Type classes were introduced into Haskell in the late 80s to provide a principled form of ad-hoc polymorphism. They have since found wide application in Scala, in applications and libraries alike. From implementing limited forms of dependent typing, to inductive proofs at the type level, to solutions to the expression problem - type classes are a valuable tool in the toolbox of the functional programming practitioner. This talk will look at their implementation in Scala, the problems they solve, and caveats to look out for when applying type classes.
Andreas is a senior software engineer leading a team of super talented engineers building a suite of products that deliver measurable customer value. He has been in the business of developing scalable and reliable software for almost 15 years - embracing Scala's quirky idiosyncracies for the last 5 of those. When he is not humbled by his coworkers or his motorbike he is hacking on shapeless and helping to re-home ex racing Greyhounds.