@hackage these0.7.6

An either-or-both data type & a generalized 'zip with padding' typeclass

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.

For a dependency light version, check https://hackage.haskell.org/package/data-or package.