Finally there's eitherC
instance Distributive (:-)