<div dir="ltr">GHC.Generics defines the following pleasantly-named types<br><div><br>data (f :+: g) a = L1 (f a) | R1 (g a)<br><br>and<br><br>data (f :*: g) a = f a :*: g a<br><br>represent lifted sums and products (analogous to Either and (,), respectively). These types, however, are given very few instances. Most notably, they lack even Functor instances!<br><br>Entirely equivalent types, with less pleasant names, appear in transformers Data.Functor.Sum and Data.Functor.Product, where they are given plenty of instances. Is there some way to bring these things together, preferably with the names from GHC.Generics and the instances from Data.Functor.Sum and Data.Functor.Product?<br></div></div>