Advanced Scala Chapters: Dependent Types