Functor (functional programming)
In functional programming, a functor is a design pattern inspired by the definition from category theory, that allows for a generic type to apply a function inside without changing the structure of the generic type.
This idea is encoded in Haskell using type class
class Functor f where
fmap :: -> f a -> f b
with conditions called functor laws
fmap id = id
fmap = .
In Scala higher kinded types are used
trait FunctorF[_
[Simple examples of this are Option and collection types. Functors are very useful in modeling functional effects to apply a function to computations that did not yet finish.
Functors form a base for more complex abstractions like Applicative, Monad, Comonad.
In C++, the name functor refers to a function object instead of this definition.