export interface Left { _tag: 'Left' left: L } export interface Right { _tag: 'Right' right: R } export type Either = Left | Right export const isLeft = (either: Either): either is Left => either._tag === 'Left' export const isRight = (either: Either): either is Right => either._tag === 'Right' export const left = (value: L): Left => ({ _tag: 'Left', left: value, }) export const right = (value: R): Right => ({ _tag: 'Right', right: value, })