-- version if desired.
second :: a b c -> a (d,b) (d,c)
second f = arr swap >>> first f >>> arr swap
-- version if desired.
second :: a b c -> a (d,b) (d,c)
second f = arr swap >>> first f >>> arr swap
-- | Split the input between the two argument arrows and combine
-- their output. Note that this is in general not a functor.
-- | Split the input between the two argument arrows and combine
-- their output. Note that this is in general not a functor.
mirror (Right y) = Left y
-- | Split the input between the two argument arrows, retagging
mirror (Right y) = Left y
-- | Split the input between the two argument arrows, retagging