my solutions to assigments from Martin Odersky's Functional Programming Principles in Scala