Chapter 3: Types and classes

@laurocaetano just finished the exercises from chapter 3.
yeah, but this is not a 'feasible' assumption. I had to check the proper answer about it.

The first part that I said is half of the response. The point with functions is the same as math definitions.

`f: X -> Y`, you have a domain and range (or image).

in order to 2 functions be equal, they must keep this domain-range relation. Why it is not feasible them? Consider a `double` function, you map a value from domain of integer to integer. The domain has infinity values, so in order to ensure that two functions are equal you would have to test all input values and if they output the same value for each one, which is... impossible.

However, it is feasible if your input domain is limited, like: Boolean values, which has only two, so this is a possible case to add equality for the function.