Chapter 8: Functional Parsers

@carlosgaldino and @laurocaetano I just finished the exercises for chapter 8.

Now things are getting interesting. This parser chapter is the introduction to Monads, but it does not mention it. It gives an idea of the `(>>=)` and `return`.

Unfortunately, I couldn't implement Haskell Monad and do-notation. For some reason the output is not as expected. The String to be parsed isn't being consumed, so the parsing never advance and keep failing.

TODO:

- [ ] use instance Monad
- [ ] use do-notation
No, you need to consume the `\n` char. The many will consume the chars until it finds an EOL. The parser cursor will stop at the EOL char, so we need to consume it in order to stop the parser cursor on the start of next line.

```haskell
parser comment "-- hello world\nabc"
> [((), "abc"]
parser commentWithoutChar "-- hello world\nabc"
> [((),"\nabc")]
```