Chapter 4: Defining functions

@laurocaetano and @carlosgaldino just finished the exercises from chapter 4.

Also got interested on how to apply lambda calculus. In the past, I couldn't understand the lambda calculus notation, but when you see 'curried functions' the stuff gets more clear. Plus this post[1] helped me a lot in understanding the notation.

[1] http://www.flyingmachinestudios.com/programming/a-taste-of-the-lambda-calculus/
couldn't find another to print this test. Since `[]` empty list have unknown type, `show` can't infer the type in list, so I forced one.

However, on ghci, `show []` outputs `[]` as expected