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 :: (a -> b) -> f a -> f b
with conditions called functor laws
fmap id = id
fmap (g . h) = (fmap g) . (fmap h)
In Scala higher kinded types are used
trait Functor[F[_]] {
def map[A,B](a: F[A])(f: A => B): F[B]
}
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.
External links
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.