What are Scala Type Classes?
What kind of problem do type classes solve and how are they implemented? 5 simple steps for encoding a type class in Scala in an idiomatic way.