Descrição
Define um tipo de dado que pode guardar um valor do lado esquerdo, do lado direito ou dos dois lados ao mesmo tempo. Ele preenche uma lacuna entre Either, que escolhe um lado, e pares, que exigem os dois.
É útil para mesclas, comparações, validações, sincronização, lógica parecida com diff e APIs em que sobreposição parcial tem significado. É um pequeno bloco de construção usado por código Haskell.