make Tuple its own, rather than yet another algebraic
Util: add factorize, swap
parse case alternatives
Data.RFunctor
Util: *=*, &=& :: Applicative p => ...