Codes from Functional Programming Principles in Scala