Programming in Scala - Odersky, Martin; Spoon, Lex; Venners, Bill (2016)