Dan Rosen's 'Scala Typeclasses' notes