links: Software Design Patterns MOC
What is Functor
Functors are objects (Containers) that implement map method. These are the rules for a qualifying functor
-
Preserve function composition while mapping. It means composing two functions and then mapping the result function over a function should be the same as first mapping one function over the functor and then mapping the other one.
For example javascript Array’s map method is a functor
// fx.map(f).map(g) == fx.map(x => g(f(x)))
const result1 = ['Squirrels']
.map(s => s.substr(5))
.map(s => s.toUpperCase())
const result2 = ['Squirrels']
.map(s => s.substr(5).toUpperCase())
console.log(result1, result2)- If we map the id function over a functor, the functor that we get back should be the same as original functor id is the identity function which just returns it’s parameter unmodified.
// fx.map(id) == id(fx)
const id = x => x
const result1 = ['Crayons'].map(id)
const result2 = id(['Crayons'])
console.log(result1, result2)Origin
In Mathematics, a functor is a map between categories. It belongs to a category theory in Mathematics.
tags: design-pattern
sources: