Split the input between the two argument arrows and combine their
output. Note that this is in general not a functor.
The default definition may be overridden with a more efficient version
if desired.
b ╭─────╮ b'
>───┼─ f ─┼───>
>───┼─ g ─┼───>
c ╰─────╯ c'
due to the hack for the kind of (,) in the current version of
GHC we can't actually make instances for (,) :: Constraint ->
Constraint -> Constraint, but (,) is a bifunctor on
the category of constraints. This lets us map over both sides.
Split the input between the two argument arrows and combine their
output. Note that this is in general not a functor.
The default definition may be overridden with a more efficient version
if desired.
Split the input between the two argument arrows and combine their
output. Note that this is in general not a functor.
The default definition may be overridden with a more efficient version
if desired.
the product type constructor (,) is a bifunctor from
Iso $times$ Iso to Iso, so that we have the
bifunctorial map *** which allows two separate isomorphisms to
work on the two components of a tuple.