@typed/fp
Version:
Data Structures and Resources for fp-ts
120 lines (101 loc) • 2.15 kB
text/typescript
/**
* EnvThese is a TheseT of Env.
* @since 0.9.7
*/
import { Semigroup } from 'fp-ts/Semigroup'
import * as TH from 'fp-ts/These'
import * as TT from 'fp-ts/TheseT'
import * as E from './Env'
/**
* @since 0.9.7
* @category Model
*/
export interface EnvThese<R, E, A> extends E.Env<R, TH.These<E, A>> {}
/**
* @since 0.9.7
* @category Constructor
*/
export const getAp = <E>(S: Semigroup<E>) => TT.ap(E.Apply, S)
/**
* @since 0.9.7
* @category Combinator
*/
export const bimap = TT.bimap(E.Functor)
/**
* @since 0.9.7
* @category Constructor
*/
export const both = TT.both(E.Pointed)
/**
* @since 0.9.7
* @category Combinator
*/
export const getChain = <E>(S: Semigroup<E>) => TT.chain(E.Monad, S)
/**
* @since 0.9.7
* @category Constructor
*/
export const left = TT.left(E.Pointed)
/**
* @since 0.9.7
* @category Constructor
*/
export const leftF = TT.leftF(E.Chain)
/**
* @since 0.9.7
* @category Combinator
*/
export const map = TT.map(E.Functor)
/**
* @since 0.9.7
* @category Combinator
*/
export const mapLeft = TT.mapLeft(E.Functor)
/**
* @since 0.9.7
* @category Combinator
*/
export const match = TT.match(E.Functor)
/**
* @since 0.9.7
* @category Combinator
*/
export const matchW = TT.match(E.Functor) as <E, B, A, C, D>(
onLeft: (e: E) => B,
onRight: (a: A) => C,
onBoth: (e: E, a: A) => D,
) => <R>(ma: E.Env<R, TH.These<E, A>>) => E.Env<R, B | C | D>
/**
* @since 0.9.7
* @category Combinator
*/
export const matchE = TT.matchE(E.Chain)
/**
* @since 0.9.7
* @category Combinator
*/
export const matchEW = TT.matchE(E.Chain) as <E, R, B, A, C, D>(
onLeft: (e: E) => E.Env<R, B>,
onRight: (a: A) => E.Env<R, C>,
onBoth: (e: E, a: A) => E.Env<R, D>,
) => (ma: E.Env<R, TH.These<E, A>>) => E.Env<R, B | C | D>
/**
* @since 0.9.7
* @category Constructor
*/
export const right = TT.right(E.Pointed)
/**
* @since 0.9.7
* @category Constructor
*/
export const rightF = TT.rightF(E.Chain)
/**
* @since 0.9.7
* @category Combinator
*/
export const swap = TT.swap(E.Functor)
/**
* @since 0.9.7
* @category Combinator
*/
export const toTuple2 = TT.toTuple2(E.Functor)