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/
nope, the `take`, `drop` and `splitAt` deal with empty list already.

```
Prelude> take 0 []
[]
Prelude> drop 0 []
[]
Prelude> splitAt 0 []
([],[])
```

so they aren't necessary, removing it.