| Copyright | (C) 2011-2015 Edward Kmett | 
|---|---|
| License | BSD-style (see the file LICENSE) | 
| Maintainer | Edward Kmett <[email protected]> | 
| Stability | provisional | 
| Portability | portable | 
| Safe Haskell | Trustworthy | 
| Language | Haskell2010 | 
Data.Functor.Extend
Contents
Description
Synopsis
- class Functor w => Extend w where
- duplicated :: w a -> w (w a)
 - extended :: (w a -> b) -> w a -> w b
 
 
Extendable Functors
There are two ways to define an Extend instance:
I. Provide definitions for extended
 satisfying this law:
extended f . extended g = extended (f . extended g)
II. Alternately, you may choose to provide definitions for duplicated
 satisfying this law:
duplicated . duplicated = fmap duplicated . duplicated
You may of course, choose to define both duplicated and extended.
 In that case you must also satisfy these laws:
extended f = fmap f . duplicated duplicated = extended id
These are the default definitions of extended and duplicated.
class Functor w => Extend w where Source #
Minimal complete definition
Methods
duplicated :: w a -> w (w a) Source #
duplicated = extended id fmap (fmap f) . duplicated = duplicated . fmap f
extended :: (w a -> b) -> w a -> w b Source #
extended f = fmap f . duplicated