Description
Defines a data type that can hold a value from the left side, the right side, or both sides at the same time. This fills a gap between Either, which chooses one side, and pairs, which require both.
It is useful for merges, comparisons, validations, synchronization, diff-like logic, and APIs where partial overlap is meaningful. It is a small library building block used by Haskell code.