Functional Programmming In Scala