@typed/fp
Version:
Data Structures and Resources for fp-ts
800 lines (541 loc) • 12.6 kB
Markdown
---
title: DataEither.ts
nav_order: 6
parent: Modules
---
## DataEither overview
DataEither is an ADT which allows you to represent all the states involved in loading a piece of
data asynchronously which might fail.
Added in v0.9.2
---
<h2 class="text-delta">Table of contents</h2>
- [Combinator](#combinator)
- [alt](#alt)
- [ap](#ap)
- [apFirst](#apfirst)
- [apS](#aps)
- [apSecond](#apsecond)
- [apT](#apt)
- [bimap](#bimap)
- [bind](#bind)
- [bindTo](#bindto)
- [bracket](#bracket)
- [chain](#chain)
- [chainEitherK](#chaineitherk)
- [chainFirst](#chainfirst)
- [chainOptionK](#chainoptionk)
- [chainRec](#chainrec)
- [filterOrElse](#filterorelse)
- [flap](#flap)
- [fromEitherK](#fromeitherk)
- [fromOption](#fromoption)
- [fromOptionK](#fromoptionk)
- [fromPredicate](#frompredicate)
- [getOrElse](#getorelse)
- [getOrElseE](#getorelsee)
- [map](#map)
- [mapLeft](#mapleft)
- [match](#match)
- [matchE](#matche)
- [orElse](#orelse)
- [orElseFirst](#orelsefirst)
- [orLeft](#orleft)
- [right](#right)
- [swap](#swap)
- [toLoading](#toloading)
- [toUnion](#tounion)
- [tupled](#tupled)
- [Constructor](#constructor)
- [fromData](#fromdata)
- [fromDataL](#fromdatal)
- [fromEither](#fromeither)
- [fromProgress](#fromprogress)
- [left](#left)
- [of](#of)
- [refresh](#refresh)
- [replete](#replete)
- [Consturctor](#consturctor)
- [loading](#loading)
- [noData](#nodata)
- [Instance](#instance)
- [Alt](#alt)
- [Applicative](#applicative)
- [Apply](#apply)
- [Bifunctor](#bifunctor)
- [Chain](#chain)
- [ChainRec](#chainrec)
- [FromEither](#fromeither)
- [Functor](#functor)
- [Monad](#monad)
- [MonadRec](#monadrec)
- [Pointed](#pointed)
- [Model](#model)
- [DataEither (type alias)](#dataeither-type-alias)
- [Typeclass Constructor](#typeclass-constructor)
- [altValidation](#altvalidation)
- [getSemigroup](#getsemigroup)
- [URI](#uri)
- [URI](#uri-1)
- [URI (type alias)](#uri-type-alias)
---
# Combinator
## alt
**Signature**
```ts
export declare const alt: <E, A>(
second: Lazy<D.Data<Ei.Either<E, A>>>,
) => (first: D.Data<Ei.Either<E, A>>) => D.Data<Ei.Either<E, A>>
```
Added in v0.9.2
## ap
**Signature**
```ts
export declare const ap: <E, A>(
fa: D.Data<Ei.Either<E, A>>,
) => <B>(fab: D.Data<Ei.Either<E, (a: A) => B>>) => D.Data<Ei.Either<E, B>>
```
Added in v0.9.2
## apFirst
**Signature**
```ts
export declare const apFirst: <E, B>(
second: D.Data<Ei.Either<E, B>>,
) => <A>(first: D.Data<Ei.Either<E, A>>) => D.Data<Ei.Either<E, A>>
```
Added in v0.9.2
## apS
**Signature**
```ts
export declare const apS: <N, A, E, B>(
name: Exclude<N, keyof A>,
fb: D.Data<Ei.Either<E, B>>,
) => (
fa: D.Data<Ei.Either<E, A>>,
) => D.Data<Ei.Either<E, { readonly [K in N | keyof A]: K extends keyof A ? A[K] : B }>>
```
Added in v0.9.2
## apSecond
**Signature**
```ts
export declare const apSecond: <E, B>(
second: D.Data<Ei.Either<E, B>>,
) => <A>(first: D.Data<Ei.Either<E, A>>) => D.Data<Ei.Either<E, B>>
```
Added in v0.9.2
## apT
**Signature**
```ts
export declare const apT: <E, B>(
fb: D.Data<Ei.Either<E, B>>,
) => <A>(fas: D.Data<Ei.Either<E, A>>) => D.Data<Ei.Either<E, readonly [...A, B]>>
```
Added in v0.9.2
## bimap
**Signature**
```ts
export declare const bimap: <E, G, A, B>(
f: (e: E) => G,
g: (a: A) => B,
) => (fea: D.Data<Ei.Either<E, A>>) => D.Data<Ei.Either<G, B>>
```
Added in v0.9.2
## bind
**Signature**
```ts
export declare const bind: <N, A, E, B>(
name: Exclude<N, keyof A>,
f: (a: A) => D.Data<Ei.Either<E, B>>,
) => (
ma: D.Data<Ei.Either<E, A>>,
) => D.Data<Ei.Either<E, { readonly [K in N | keyof A]: K extends keyof A ? A[K] : B }>>
```
Added in v0.9.2
## bindTo
**Signature**
```ts
export declare const bindTo: <N>(
name: N,
) => <E, A>(fa: D.Data<Ei.Either<E, A>>) => D.Data<Ei.Either<E, { readonly [K in N]: A }>>
```
Added in v0.9.2
## bracket
**Signature**
```ts
export declare const bracket: <E, A, B>(
acquire: D.Data<Ei.Either<E, A>>,
use: (a: A) => D.Data<Ei.Either<E, B>>,
release: (a: A, e: Ei.Either<E, B>) => D.Data<Ei.Either<E, void>>,
) => D.Data<Ei.Either<E, B>>
```
Added in v0.9.2
## chain
**Signature**
```ts
export declare const chain: <A, E, B>(
f: (a: A) => D.Data<Ei.Either<E, B>>,
) => (ma: D.Data<Ei.Either<E, A>>) => D.Data<Ei.Either<E, B>>
```
Added in v0.9.2
## chainEitherK
**Signature**
```ts
export declare const chainEitherK: <A, E, B>(
f: (a: A) => Ei.Either<E, B>,
) => (ma: D.Data<Ei.Either<E, A>>) => D.Data<Ei.Either<E, B>>
```
Added in v0.9.2
## chainFirst
**Signature**
```ts
export declare const chainFirst: <A, E, B>(
f: (a: A) => D.Data<Ei.Either<E, B>>,
) => (first: D.Data<Ei.Either<E, A>>) => D.Data<Ei.Either<E, A>>
```
Added in v0.9.2
## chainOptionK
**Signature**
```ts
export declare const chainOptionK: <E>(
onNone: Lazy<E>,
) => <A, B>(f: (a: A) => Option<B>) => (ma: D.Data<Ei.Either<E, A>>) => D.Data<Ei.Either<E, B>>
```
Added in v0.9.2
## chainRec
**Signature**
```ts
export declare const chainRec: <A, E, B>(
f: (value: A) => D.Data<Ei.Either<E, Ei.Either<A, B>>>,
) => (a: A) => D.Data<Ei.Either<E, B>>
```
Added in v0.9.2
## filterOrElse
**Signature**
```ts
export declare const filterOrElse: {
<A, B, E>(refinement: Refinement<A, B>, onFalse: (a: A) => E): (
ma: D.Data<Ei.Either<E, A>>,
) => D.Data<Ei.Either<E, B>>
<A, E>(predicate: Predicate<A>, onFalse: (a: A) => E): <B>(
mb: D.Data<Ei.Either<E, B>>,
) => D.Data<Ei.Either<E, B>>
}
```
Added in v0.9.2
## flap
**Signature**
```ts
export declare const flap: <A>(
a: A,
) => <E, B>(fab: D.Data<Ei.Either<E, (a: A) => B>>) => D.Data<Ei.Either<E, B>>
```
Added in v0.9.2
## fromEitherK
**Signature**
```ts
export declare const fromEitherK: <A, E, B>(
f: (...a: A) => Ei.Either<E, B>,
) => (...a: A) => D.Data<Ei.Either<E, B>>
```
Added in v0.9.2
## fromOption
**Signature**
```ts
export declare const fromOption: <E>(
onNone: Lazy<E>,
) => NaturalTransformation12C<'Option', '@typed/fp/DataEither', E>
```
Added in v0.9.2
## fromOptionK
**Signature**
```ts
export declare const fromOptionK: <E>(
onNone: Lazy<E>,
) => <A, B>(f: (...a: A) => Option<B>) => (...a: A) => D.Data<Ei.Either<E, B>>
```
Added in v0.9.2
## fromPredicate
**Signature**
```ts
export declare const fromPredicate: {
<A, B>(refinement: Refinement<A, B>): (a: A) => D.Data<Ei.Either<A, B>>
<A>(predicate: Predicate<A>): <B>(b: B) => D.Data<Ei.Either<B, B>>
}
```
Added in v0.9.2
## getOrElse
**Signature**
```ts
export declare const getOrElse: <E, A>(
onLeft: (e: E) => A,
) => (ma: D.Data<Ei.Either<E, A>>) => D.Data<A>
```
Added in v0.9.2
## getOrElseE
**Signature**
```ts
export declare const getOrElseE: <E, A>(
onLeft: (e: E) => D.Data<A>,
) => (ma: D.Data<Ei.Either<E, A>>) => D.Data<A>
```
Added in v0.9.2
## map
**Signature**
```ts
export declare const map: <A, B>(
f: (a: A) => B,
) => <E>(fa: D.Data<Ei.Either<E, A>>) => D.Data<Ei.Either<E, B>>
```
Added in v0.9.2
## mapLeft
**Signature**
```ts
export declare const mapLeft: <E, G>(
f: (e: E) => G,
) => <A>(fea: D.Data<Ei.Either<E, A>>) => D.Data<Ei.Either<G, A>>
```
Added in v0.9.2
## match
**Signature**
```ts
export declare const match: <E, B, A>(
onLeft: (e: E) => B,
onRight: (a: A) => B,
) => (ma: D.Data<Ei.Either<E, A>>) => D.Data<B>
```
Added in v0.9.2
## matchE
**Signature**
```ts
export declare const matchE: <E, B, A>(
onLeft: (e: E) => D.Data<B>,
onRight: (a: A) => D.Data<B>,
) => (ma: D.Data<Ei.Either<E, A>>) => D.Data<B>
```
Added in v0.9.2
## orElse
**Signature**
```ts
export declare const orElse: <E1, E2, A>(
onLeft: (e: E1) => D.Data<Ei.Either<E2, A>>,
) => (ma: D.Data<Ei.Either<E1, A>>) => D.Data<Ei.Either<E2, A>>
```
Added in v0.9.2
## orElseFirst
**Signature**
```ts
export declare const orElseFirst: <E, B>(
onLeft: (e: E) => D.Data<Ei.Either<E, B>>,
) => <A>(ma: D.Data<Ei.Either<E, A>>) => D.Data<Ei.Either<E, A>>
```
Added in v0.9.2
## orLeft
**Signature**
```ts
export declare const orLeft: <E1, E2>(
onLeft: (e: E1) => D.Data<E2>,
) => <A>(fa: D.Data<Ei.Either<E1, A>>) => D.Data<Ei.Either<E2, A>>
```
Added in v0.9.2
## right
**Signature**
```ts
export declare const right: <A, E>(a: A) => D.Data<Ei.Either<E, A>>
```
Added in v0.9.2
## swap
**Signature**
```ts
export declare const swap: <E, A>(ma: D.Data<Ei.Either<E, A>>) => D.Data<Ei.Either<A, E>>
```
Added in v0.9.2
## toLoading
**Signature**
```ts
export declare const toLoading: <E, A>(de: D.Data<Ei.Either<E, A>>) => D.Data<Ei.Either<E, A>>
```
Added in v0.12.1
## toUnion
**Signature**
```ts
export declare const toUnion: <E, A>(fa: D.Data<Ei.Either<E, A>>) => D.Data<E | A>
```
Added in v0.9.2
## tupled
**Signature**
```ts
export declare const tupled: <E, A>(
fa: D.Data<Ei.Either<E, A>>,
) => D.Data<Ei.Either<E, readonly [A]>>
```
Added in v0.9.2
# Constructor
## fromData
**Signature**
```ts
export declare const fromData: <A, E>(fa: D.Data<A>) => D.Data<Ei.Either<E, A>>
```
Added in v0.9.2
## fromDataL
**Signature**
```ts
export declare const fromDataL: <E, A>(fe: D.Data<E>) => D.Data<Ei.Either<E, A>>
```
Added in v0.9.2
## fromEither
**Signature**
```ts
export declare const fromEither: <E, A>(e: Ei.Either<E, A>) => D.Data<Ei.Either<E, A>>
```
Added in v0.9.2
## fromProgress
**Signature**
```ts
export declare const fromProgress: (progress: Progress) => D.Data<Ei.Either<never, unknown>>
```
Added in v0.12.1
## left
**Signature**
```ts
export declare const left: <E, A>(e: E) => D.Data<Ei.Either<E, A>>
```
Added in v0.9.2
## of
**Signature**
```ts
export declare const of: <A, E = never>(a: A) => D.Data<Ei.Either<E, A>>
```
Added in v0.9.2
## refresh
**Signature**
```ts
export declare const refresh: <A>(
value: A,
progress?: None | Some<Progress> | undefined,
) => D.Data<Ei.Either<never, A>>
```
Added in v0.12.1
## replete
**Signature**
```ts
export declare const replete: <A>(value: A) => D.Data<Ei.Either<never, A>>
```
Added in v0.12.1
# Consturctor
## loading
**Signature**
```ts
export declare const loading: D.Data<Ei.Either<never, never>>
```
Added in v0.12.1
## noData
**Signature**
```ts
export declare const noData: D.Data<Ei.Either<never, never>>
```
Added in v0.12.1
# Instance
## Alt
**Signature**
```ts
export declare const Alt: Alt_.Alt2<'@typed/fp/DataEither'>
```
Added in v0.9.2
## Applicative
**Signature**
```ts
export declare const Applicative: Applicative_.Applicative2<'@typed/fp/DataEither'>
```
Added in v0.9.2
## Apply
**Signature**
```ts
export declare const Apply: Apply_.Apply2<'@typed/fp/DataEither'>
```
Added in v0.9.2
## Bifunctor
**Signature**
```ts
export declare const Bifunctor: Bifunctor_.Bifunctor2<'@typed/fp/DataEither'>
```
Added in v0.9.2
## Chain
**Signature**
```ts
export declare const Chain: Chain_.Chain2<'@typed/fp/DataEither'>
```
Added in v0.9.2
## ChainRec
**Signature**
```ts
export declare const ChainRec: ChainRec_.ChainRec2<'@typed/fp/DataEither'>
```
Added in v0.9.2
## FromEither
**Signature**
```ts
export declare const FromEither: FEi.FromEither2<'@typed/fp/DataEither'>
```
Added in v0.9.2
## Functor
**Signature**
```ts
export declare const Functor: Functor_.Functor2<'@typed/fp/DataEither'>
```
Added in v0.9.2
## Monad
**Signature**
```ts
export declare const Monad: Monad_.Monad2<'@typed/fp/DataEither'>
```
Added in v0.9.2
## MonadRec
**Signature**
```ts
export declare const MonadRec: MonadRec2<'@typed/fp/DataEither'>
```
Added in v0.9.2
## Pointed
**Signature**
```ts
export declare const Pointed: Pointed_.Pointed2<'@typed/fp/DataEither'>
```
Added in v0.9.2
# Model
## DataEither (type alias)
**Signature**
```ts
export type DataEither<E, A> = D.Data<Ei.Either<E, A>>
```
Added in v0.9.2
# Typeclass Constructor
## altValidation
**Signature**
```ts
export declare const altValidation: <A>(
semigroup: Semigroup_.Semigroup<A>,
) => <A>(
second: Lazy<D.Data<Ei.Either<A, A>>>,
) => (first: D.Data<Ei.Either<A, A>>) => D.Data<Ei.Either<A, A>>
```
Added in v0.9.2
## getSemigroup
**Signature**
```ts
export declare const getSemigroup: <A, E>(
S: Semigroup_.Semigroup<A>,
) => Semigroup_.Semigroup<D.Data<Ei.Either<E, A>>>
```
Added in v0.9.2
# URI
## URI
**Signature**
```ts
export declare const URI: '@typed/fp/DataEither'
```
Added in v0.9.2
## URI (type alias)
**Signature**
```ts
export type URI = typeof URI
```
Added in v0.9.2