diff --git a/src/lib/util/basic/either.ts b/src/lib/util/basic/either.ts index d3f050c..92cc051 100644 --- a/src/lib/util/basic/either.ts +++ b/src/lib/util/basic/either.ts @@ -3,26 +3,26 @@ export type Right = {readonly _tag: 'Right', readonly right: A} export type Either = Right | Left // Constructors -export const left = (e: E): Either => ({ +export const left = (e: E): Either => ({ _tag: 'Left', left: e, }) -export const right = (a: A): Either => ({ +export const right = (a: A): Either => ({ _tag: 'Right', right: a, }) // Operations export const eitherMap = - (f: (a: A) => B) => (fa: Either): Either => + (f: (a: A) => B) => (fa: Either): Either => fa._tag === 'Right' ? right(f(fa.right)) : fa export const eitherChain = - (f: (a: A) => Either) => - (fa: Either): Either => + (f: (a: A) => Either) => + (fa: Either): Either => fa._tag === 'Right' ? f(fa.right) : fa export const fold = - (onLeft: (e: E) => B, onRight: (a: A) => B) => - (fa: Either): B => + (onLeft: (e: E) => B, onRight: (a: A) => B) => + (fa: Either): B => fa._tag === 'Left' ? onLeft(fa.left) : onRight(fa.right)