import * as Monad from './either.impl'; import { noop } from '../function'; export class Either extends Monad.Either { private constructor() { super(noop as never); } } export type Left = Monad.Left; export function Left(a: a): Left export function Left(a: a): Either export function Left(a: a): Either { return new Monad.Left(a); } export type Right = Monad.Right; export function Right(b: b): Right export function Right(b: b): Either export function Right(b: b): Either { return new Monad.Right(b); }