implement Exercise 3 from "FP in Scala" book
implement Exercise 4 from "FP in Scala" book
implement Exercise 5 from "FP in Scala" book
implement Exercise 6 from "FP in Scala" book