Exercises of Functional Programming Principles in Scala (by Martin Odersky)