Provides generalisations of 'swap :: (a,b) -> (b,a)' and 'assoc :: ((a,b),c) -> (a,(b,c))' to 'Bifunctor's supporting similar operations (e.g. 'Either', 'These').