Coursera's Functional Programming Principles in Scala