A functor is one of those terms that comes from category theory in mathematics and causes a lot of pain to developers who come into functional programming and have less of a mathematical background. It is a requirement for monads, and here we will try to explain it in a way that will be easy to understand.
What is a functor? In the preceding section, we looked at monoids as a way to abstract some computation and then used them in different ways for optimization or to create more complex computations. Even though some people might not agree with the correctness of this approach, let's look at functors from the same point of view—something that will abstract some specific computations.
The map method for a functor of the F[T] type takes a function...