| Safe Haskell | Safe |
|---|---|
| Language | Haskell2010 |
Precursor.Control.Bifunctor
Documentation
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
Since: 4.8.0.0
Instances
| Bifunctor Either | |
| Bifunctor (,) | |
| Bifunctor Arg | |
| Bifunctor (K1 i) | |
| Bifunctor ((,,) x1) | |
| Bifunctor (Const *) | |
| Bifunctor (Tagged *) | |
| Bifunctor ((,,,) x1 x2) | |
| Bifunctor ((,,,,) x1 x2 x3) | |
| Bifunctor f0 => Bifunctor (FromStringShow2 * * f0) | |
| Bifunctor f0 => Bifunctor (FromTextShow2 * * f0) | |
| Bifunctor ((,,,,,) x1 x2 x3 x4) | |
| Bifunctor ((,,,,,,) x1 x2 x3 x4 x5) | |