| Copyright | (c) 2008--2010 Universiteit Utrecht |
|---|---|
| License | BSD3 |
| Maintainer | [email protected] |
| Stability | experimental |
| Portability | non-portable |
| Safe Haskell | Safe-Inferred |
| Language | Haskell98 |
Generics.MultiRec.HFunctor
Contents
Description
The definition of functorial map.
- class HFunctor phi f where
- hmapA :: Applicative a => (forall ix. phi ix -> r ix -> a (r' ix)) -> phi ix -> f r ix -> a (f r' ix)
- hmap :: HFunctor phi f => (forall ix. phi ix -> r ix -> r' ix) -> phi ix -> f r ix -> f r' ix
- hmapM :: (HFunctor phi f, Monad m) => (forall ix. phi ix -> r ix -> m (r' ix)) -> phi ix -> f r ix -> m (f r' ix)
Generic map
class HFunctor phi f where Source
Methods
hmapA :: Applicative a => (forall ix. phi ix -> r ix -> a (r' ix)) -> phi ix -> f r ix -> a (f r' ix) Source
Instances
| HFunctor phi U | |
| HFunctor phi (K x) | |
| El phi xi => HFunctor phi (I xi) | |
| (Constructor c, HFunctor phi f) => HFunctor phi (C c f) | |
| (Traversable f, HFunctor phi g) => HFunctor phi ((:.:) f g) | |
| HFunctor phi f => HFunctor phi ((:>:) f ix) | |
| (HFunctor phi f, HFunctor phi g) => HFunctor phi ((:*:) f g) | |
| (HFunctor phi f, HFunctor phi g) => HFunctor phi ((:+:) f g) |
hmap :: HFunctor phi f => (forall ix. phi ix -> r ix -> r' ix) -> phi ix -> f r ix -> f r' ix Source
The function hmap takes a functor f. All the recursive instances
in that functor are wrapped by an application of r. The argument to
hmap takes a function that transformes r occurrences into r'
occurrences, for every ix. In order to associate the index ix
with the correct family phi, the argument to hmap is additionally
parameterized by a witness of type phi ix.