In Haskell, there is a type class called Extend.
The class is defined as the following
class Functor w => Extend w where
extended :: (w a -> b) -> w a -> w b
Every instance of the Extend
class should have the following properties:
extended f . extended g = extended (f . extended g)
I can see its similarities to Functor
. Particularly, Functor
's property fmap f . fmap g == fmap (f . g)
looks similar to Extend
.
How would you interpret Extend
? What is the significance of it? Does it make any computations easier? What abstractions are made when using Extend
?