Introduce Stacked data type isomorphic to Either.
Add (Lattice a, Lattice b) => Lattice (Stacked a b) instance constructed by considering all minimal elements of b covering all maximal elements of a.
Add conversion functions from Either to Stacked.
Add conversion functions from Maybe to Dropped and Lifted.
Motivation for conversion functions is to allow for easy integration with ecosystem that pervasively uses Either and Maybe.
Disclaimer: I didn't manage to include QC.CoArbitrary and QC.Function instances of Stacked, need help in that.
Introduce Stacked data type isomorphic to Either. Add (Lattice a, Lattice b) => Lattice (Stacked a b) instance constructed by considering all minimal elements of b covering all maximal elements of a. Add conversion functions from Either to Stacked. Add conversion functions from Maybe to Dropped and Lifted.
Motivation for conversion functions is to allow for easy integration with ecosystem that pervasively uses Either and Maybe.
Disclaimer: I didn't manage to include QC.CoArbitrary and QC.Function instances of Stacked, need help in that.
I'm open to idea/naming/code style suggestions.