coursera functional principles in Scala