Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
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:
bimap
id
id
≡id
If you supply first
and second
, ensure:
first
id
≡id
second
id
≡id
If you supply both, you should also ensure:
bimap
f g ≡first
f.
second
g
These ensure by parametricity:
bimap
(f.
g) (h.
i) ≡bimap
f h.
bimap
g ifirst
(f.
g) ≡first
f.
first
gsecond
(f.
g) ≡second
f.
second
g
Since: 4.8.0.0
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) | |