This package provides a data type 'These a b' which can hold a value of either type or values of each type. This is usually thought of as an "inclusive or" type (contrasting 'Either a b' as "exclusive or") or as an "outer join" type (contrasting '(a, b)' as "inner join").
The major use case of this is provided by the 'Align' class, representing a generalized notion of "zipping with padding" that combines structures without truncating to the size of the smaller input.
Also included is 'ChronicleT', a monad transformer based on the Monad instance for 'These a', along with the usual monad transformer bells and whistles.