class Swap p
Symmetric Bifunctors.
'swap' . 'swap' = 'id'
If p is a Bifunctor the following property is assumed to hold:
'swap' . 'bimap' f g = 'bimap' g f . 'swap'
Swap isn't a subclass of Bifunctor, as for example
is not a Bifunctor but has Swap instance