The Functor class is used for types that can be mapped over. Instances of Functor should satisfy the following laws:
> fmap id == id
> fmap (f . g) == fmap f . fmap g
The instances of Functor for lists, Data.Maybe.Maybe and System.IO.IO satisfy these laws.
Functors: uniform action over a parameterized type, generalizing the map function on lists.