| Portability | portable |
|---|---|
| Stability | provisional |
| Maintainer | Edward Kmett <ekmett@gmail.com> |
| Safe Haskell | Safe-Inferred |
Data.Bifunctor
Description
Documentation
Minimal definition either bimap or first and second
Formally, the class Bifunctor represents a bifunctor
from Hask -> Hask.
Intuitively it is a bifunctor where both the first and second arguments are covariant.
You can define a Bifunctor by either defining bimap or by defining both
first and second.
If you supply bimap, you should ensure that:
bimapidid≡id
If you supply first and second, ensure:
firstid≡idsecondid≡id
If you supply both, you should also ensure:
bimapf g ≡firstf.secondg
These ensure by parametricity:
bimap(f.g) (h.i) ≡bimapf h.bimapg ifirst(f.g) ≡firstf.firstgsecond(f.g) ≡secondf.secondg
Methods
bimap :: (a -> b) -> (c -> d) -> p a c -> p b dSource
Instances
| Bifunctor Either | |
| Bifunctor (,) | |
| Bifunctor Const | |
| Bifunctor ((,,) x) | |
| Bifunctor (Tagged *) | |
| Functor f => Bifunctor (Clown f) | |
| Bifunctor p => Bifunctor (Flip p) | |
| Functor g => Bifunctor (Joker g) | |
| Bifunctor p => Bifunctor (WrappedBifunctor p) | |
| Bifunctor ((,,,) x y) | |
| (Bifunctor f, Bifunctor g) => Bifunctor (Product f g) | |
| Bifunctor ((,,,,) x y z) |