Haskell Functors for the programmer

Functor is a type class used for types that can be mapped over.