---
title: ReaderStreamEither.ts
nav_order: 46
parent: Modules
---

## ReaderStreamEither overview

ReaderStreamEither is an EitherT of ReaderStream, allowing for you to represent your application
over time with Stream, with support for branching/error-handling through Either, and dependency
injection from Reader.

Added in v0.9.2

---

<h2 class="text-delta">Table of contents</h2>

- [Combinator](#combinator)
  - [alt](#alt)
  - [altAll](#altall)
  - [altW](#altw)
  - [ap](#ap)
  - [apFirst](#apfirst)
  - [apFirstW](#apfirstw)
  - [apS](#aps)
  - [apSW](#apsw)
  - [apScondW](#apscondw)
  - [apSecond](#apsecond)
  - [apT](#apt)
  - [apTW](#aptw)
  - [apW](#apw)
  - [bimap](#bimap)
  - [bind](#bind)
  - [bindTo](#bindto)
  - [bracket](#bracket)
  - [bracketW](#bracketw)
  - [chain](#chain)
  - [chainEitherK](#chaineitherk)
  - [chainEnvK](#chainenvk)
  - [chainFirst](#chainfirst)
  - [chainFirstEnvK](#chainfirstenvk)
  - [chainFirstIOK](#chainfirstiok)
  - [chainFirstReaderK](#chainfirstreaderk)
  - [chainFirstReaderStreamK](#chainfirstreaderstreamk)
  - [chainFirstResumeK](#chainfirstresumek)
  - [chainFirstStreamK](#chainfirststreamk)
  - [chainFirstTaskK](#chainfirsttaskk)
  - [chainFirstW](#chainfirstw)
  - [chainIOK](#chainiok)
  - [chainOptionK](#chainoptionk)
  - [chainReaderK](#chainreaderk)
  - [chainReaderKW](#chainreaderkw)
  - [chainReaderStreamK](#chainreaderstreamk)
  - [chainRec](#chainrec)
  - [chainResumeK](#chainresumek)
  - [chainStreamK](#chainstreamk)
  - [chainTaskK](#chaintaskk)
  - [chainW](#chainw)
  - [filterOrElse](#filterorelse)
  - [flap](#flap)
  - [getOrElse](#getorelse)
  - [getOrElseE](#getorelsee)
  - [getOrElseEW](#getorelseew)
  - [map](#map)
  - [mapLeft](#mapleft)
  - [orElse](#orelse)
  - [orElseFirst](#orelsefirst)
  - [orLeft](#orleft)
  - [provideAll](#provideall)
  - [provideAllWithEnv](#provideallwithenv)
  - [provideAllWithReaderStream](#provideallwithreaderstream)
  - [provideSome](#providesome)
  - [provideSomeWithEnv](#providesomewithenv)
  - [provideSomeWithReaderStream](#providesomewithreaderstream)
  - [swap](#swap)
  - [toUnion](#tounion)
  - [tupled](#tupled)
  - [useAll](#useall)
  - [useAllWithEnv](#useallwithenv)
  - [useAllWithReaderStream](#useallwithreaderstream)
  - [useSome](#usesome)
  - [useSomeWithEnv](#usesomewithenv)
  - [useSomeWithReaderStream](#usesomewithreaderstream)
- [Constructor](#constructor)
  - [ask](#ask)
  - [asks](#asks)
  - [fromEither](#fromeither)
  - [fromEitherK](#fromeitherk)
  - [fromEnv](#fromenv)
  - [fromEnvK](#fromenvk)
  - [fromIO](#fromio)
  - [fromIOK](#fromiok)
  - [fromOption](#fromoption)
  - [fromOptionK](#fromoptionk)
  - [fromPredicate](#frompredicate)
  - [fromReader](#fromreader)
  - [fromReaderK](#fromreaderk)
  - [fromReaderStream](#fromreaderstream)
  - [fromReaderStreamK](#fromreaderstreamk)
  - [fromReaderStreamL](#fromreaderstreaml)
  - [fromResume](#fromresume)
  - [fromResumeK](#fromresumek)
  - [fromStream](#fromstream)
  - [fromStreamK](#fromstreamk)
  - [fromTask](#fromtask)
  - [fromTaskK](#fromtaskk)
  - [left](#left)
  - [of](#of)
  - [right](#right)
  - [zero](#zero)
- [Deconstructor](#deconstructor)
  - [match](#match)
  - [matchE](#matche)
  - [matchEW](#matchew)
- [Instance](#instance)
  - [Alt](#alt)
  - [Alternative](#alternative)
  - [Applicative](#applicative)
  - [Apply](#apply)
  - [Bifunctor](#bifunctor)
  - [Chain](#chain)
  - [ChainRec](#chainrec)
  - [FromEither](#fromeither)
  - [FromEnv](#fromenv)
  - [FromIO](#fromio)
  - [FromReader](#fromreader)
  - [FromReaderStream](#fromreaderstream)
  - [FromResume](#fromresume)
  - [FromStream](#fromstream)
  - [FromTask](#fromtask)
  - [Functor](#functor)
  - [Monad](#monad)
  - [MonadRec](#monadrec)
  - [Pointed](#pointed)
  - [ProvideAll](#provideall)
  - [ProvideSome](#providesome)
  - [UseAll](#useall)
  - [UseSome](#usesome)
- [Model](#model)
  - [ReaderStreamEither (interface)](#readerstreameither-interface)
- [Type-level](#type-level)
  - [RequirementsOf (type alias)](#requirementsof-type-alias)
- [Type-lvel](#type-lvel)
  - [LeftOf (type alias)](#leftof-type-alias)
  - [RightOf (type alias)](#rightof-type-alias)
- [Typeclass Consructor](#typeclass-consructor)
  - [getApplicativeMonoid](#getapplicativemonoid)
- [Typeclass Constructor](#typeclass-constructor)
  - [altValidation](#altvalidation)
  - [getApplySemigroup](#getapplysemigroup)
- [URI](#uri)
  - [URI](#uri-1)
  - [URI (type alias)](#uri-type-alias)

---

# Combinator

## alt

**Signature**

```ts
export declare const alt: <ME, E, A>(
  second: Lazy<RS.ReaderStream<ME, Ei.Either<E, A>>>,
) => (first: RS.ReaderStream<ME, Ei.Either<E, A>>) => RS.ReaderStream<ME, Ei.Either<E, A>>
```

Added in v0.9.2

## altAll

**Signature**

```ts
export declare const altAll: <R, E, A>(
  startWith: ReaderStreamEither<R, E, A>,
) => (as: readonly ReaderStreamEither<R, E, A>[]) => ReaderStreamEither<R, E, A>
```

Added in v0.9.2

## altW

**Signature**

```ts
export declare const altW: <R1, E, A>(
  second: Lazy<RS.ReaderStream<R1, Ei.Either<E, A>>>,
) => <R2>(first: RS.ReaderStream<R2, Ei.Either<E, A>>) => RS.ReaderStream<R1 & R2, Ei.Either<E, A>>
```

Added in v0.9.2

## ap

**Signature**

```ts
export declare const ap: <R, E, A>(
  fa: Re.Reader<R, SE.StreamEither<E, A>>,
) => <B>(fab: Re.Reader<R, SE.StreamEither<E, (a: A) => B>>) => Re.Reader<R, SE.StreamEither<E, B>>
```

Added in v0.9.2

## apFirst

**Signature**

```ts
export declare const apFirst: <R, E, B>(
  second: ReaderStreamEither<R, E, B>,
) => <A>(first: ReaderStreamEither<R, E, A>) => ReaderStreamEither<R, E, A>
```

Added in v0.9.2

## apFirstW

**Signature**

```ts
export declare const apFirstW: <R1, E, B>(
  second: ReaderStreamEither<R1, E, B>,
) => <R2, A>(first: ReaderStreamEither<R2, E, A>) => ReaderStreamEither<R1 & R2, E, A>
```

Added in v0.13.9

## apS

**Signature**

```ts
export declare const apS: <N, A, R, E, B>(
  name: Exclude<N, keyof A>,
  fb: ReaderStreamEither<R, E, B>,
) => (
  fa: ReaderStreamEither<R, E, A>,
) => ReaderStreamEither<R, E, { readonly [K in N | keyof A]: K extends keyof A ? A[K] : B }>
```

Added in v0.9.2

## apSW

**Signature**

```ts
export declare const apSW: <N extends string, A, R1, E, B>(
  name: Exclude<N, keyof A>,
  fb: ReaderStreamEither<R1, E, B>,
) => <R2>(
  fa: ReaderStreamEither<R2, E, A>,
) => ReaderStreamEither<R1 & R2, E, { readonly [K in N | keyof A]: K extends keyof A ? A[K] : B }>
```

Added in v0.13.9

## apScondW

**Signature**

```ts
export declare const apScondW: <R1, E, B>(
  second: ReaderStreamEither<R1, E, B>,
) => <R2, A>(first: ReaderStreamEither<R2, E, A>) => ReaderStreamEither<R1 & R2, E, B>
```

Added in v0.13.9

## apSecond

**Signature**

```ts
export declare const apSecond: <R, E, B>(
  second: ReaderStreamEither<R, E, B>,
) => <A>(first: ReaderStreamEither<R, E, A>) => ReaderStreamEither<R, E, B>
```

Added in v0.9.2

## apT

**Signature**

```ts
export declare const apT: <R, E, B>(
  fb: ReaderStreamEither<R, E, B>,
) => <A>(fas: ReaderStreamEither<R, E, A>) => ReaderStreamEither<R, E, readonly [...A, B]>
```

Added in v0.9.2

## apTW

**Signature**

```ts
export declare const apTW: <R1, E, B>(
  fb: ReaderStreamEither<R1, E, B>,
) => <R2, A extends readonly unknown[]>(
  fas: ReaderStreamEither<R2, E, A>,
) => ReaderStreamEither<R1 & R2, E, readonly [...A, B]>
```

Added in v0.13.9

## apW

**Signature**

```ts
export declare const apW: <R1, E, A>(
  fa: Re.Reader<R1, SE.StreamEither<E, A>>,
) => <R2, B>(
  fab: Re.Reader<R2, SE.StreamEither<E, (a: A) => B>>,
) => Re.Reader<R1 & R2, SE.StreamEither<E, 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,
) => <FE>(fea: RS.ReaderStream<FE, Ei.Either<E, A>>) => RS.ReaderStream<FE, Ei.Either<G, B>>
```

Added in v0.9.2

## bind

**Signature**

```ts
export declare const bind: <N, A, R, E, B>(
  name: Exclude<N, keyof A>,
  f: (a: A) => ReaderStreamEither<R, E, B>,
) => (
  ma: ReaderStreamEither<R, E, A>,
) => ReaderStreamEither<R, 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,
) => <R, E, A>(
  fa: ReaderStreamEither<R, E, A>,
) => ReaderStreamEither<R, E, { readonly [K in N]: A }>
```

Added in v0.9.2

## bracket

**Signature**

```ts
export declare const bracket: <ME, E, A, B>(
  acquire: RS.ReaderStream<ME, Ei.Either<E, A>>,
  use: (a: A) => RS.ReaderStream<ME, Ei.Either<E, B>>,
  release: (a: A, e: Ei.Either<E, B>) => RS.ReaderStream<ME, Ei.Either<E, void>>,
) => RS.ReaderStream<ME, Ei.Either<E, B>>
```

Added in v0.9.2

## bracketW

**Signature**

```ts
export declare const bracketW: <R1, E, A, R2, B, R3>(
  acquire: RS.ReaderStream<R1, Ei.Either<E, A>>,
  use: (a: A) => RS.ReaderStream<R2, Ei.Either<E, B>>,
  release: (a: A, e: Ei.Either<E, B>) => RS.ReaderStream<R3, Ei.Either<E, void>>,
) => RS.ReaderStream<R1 & R2 & R3, Ei.Either<E, B>>
```

Added in v0.9.2

## chain

**Signature**

```ts
export declare const chain: <A, R, E, B>(
  f: (a: A) => Re.Reader<R, SE.StreamEither<E, B>>,
) => (ma: Re.Reader<R, SE.StreamEither<E, A>>) => Re.Reader<R, SE.StreamEither<E, B>>
```

Added in v0.9.2

## chainEitherK

**Signature**

```ts
export declare const chainEitherK: <A, E, B>(
  f: (a: A) => Ei.Either<E, B>,
) => <R>(ma: ReaderStreamEither<R, E, A>) => ReaderStreamEither<R, E, B>
```

Added in v0.9.2

## chainEnvK

**Signature**

```ts
export declare const chainEnvK: <A, R1, B>(
  f: (value: A) => Env<R1, B>,
) => <R2, E>(hkt: ReaderStreamEither<R2, E, A>) => ReaderStreamEither<R1 & R2, E, B>
```

Added in v0.9.2

## chainFirst

**Signature**

```ts
export declare const chainFirst: <A, R, E, B>(
  f: (a: A) => ReaderStreamEither<R, E, B>,
) => (first: ReaderStreamEither<R, E, A>) => ReaderStreamEither<R, E, A>
```

Added in v0.9.2

## chainFirstEnvK

**Signature**

```ts
export declare const chainFirstEnvK: <A, R1, B>(
  f: (value: A) => Env<R1, B>,
) => <R2, E>(hkt: ReaderStreamEither<R2, E, A>) => ReaderStreamEither<R1 & R2, E, A>
```

Added in v0.9.2

## chainFirstIOK

**Signature**

```ts
export declare const chainFirstIOK: <A, B>(
  f: (a: A) => IO<B>,
) => <R, E>(first: ReaderStreamEither<R, E, A>) => ReaderStreamEither<R, E, A>
```

Added in v0.9.2

## chainFirstReaderK

**Signature**

```ts
export declare const chainFirstReaderK: <A, R, B>(
  f: (a: A) => Re.Reader<R, B>,
) => <E>(ma: ReaderStreamEither<R, E, A>) => ReaderStreamEither<R, E, A>
```

Added in v0.9.2

## chainFirstReaderStreamK

**Signature**

```ts
export declare const chainFirstReaderStreamK: <A, R1, B>(
  f: (value: A) => RS.ReaderStream<R1, B>,
) => <R2, E>(hkt: ReaderStreamEither<R2, E, A>) => ReaderStreamEither<R1 & R2, E, A>
```

Added in v0.13.9

## chainFirstResumeK

**Signature**

```ts
export declare const chainFirstResumeK: <A, B>(
  f: (value: A) => Resume<B>,
) => <R, E>(hkt: ReaderStreamEither<R, E, A>) => ReaderStreamEither<R, E, A>
```

Added in v0.9.2

## chainFirstStreamK

**Signature**

```ts
export declare const chainFirstStreamK: <A, B>(
  f: (value: A) => S.Stream<B>,
) => <R, E>(hkt: ReaderStreamEither<R, E, A>) => ReaderStreamEither<R, E, A>
```

Added in v0.9.2

## chainFirstTaskK

**Signature**

```ts
export declare const chainFirstTaskK: <A, B>(
  f: (a: A) => Task<B>,
) => <R, E>(first: ReaderStreamEither<R, E, A>) => ReaderStreamEither<R, E, A>
```

Added in v0.9.2

## chainFirstW

**Signature**

```ts
export declare const chainFirstW: <A, R1, E, B>(
  f: (a: A) => ReaderStreamEither<R1, E, B>,
) => <R2>(first: ReaderStreamEither<R2, E, A>) => ReaderStreamEither<R1 & R2, E, A>
```

Added in v0.13.9

## chainIOK

**Signature**

```ts
export declare const chainIOK: <A, B>(
  f: (a: A) => IO<B>,
) => <R, E>(first: ReaderStreamEither<R, E, A>) => ReaderStreamEither<R, E, B>
```

Added in v0.9.2

## chainOptionK

**Signature**

```ts
export declare const chainOptionK: <E>(
  onNone: Lazy<E>,
) => <A, B>(
  f: (a: A) => Option<B>,
) => <R>(ma: ReaderStreamEither<R, E, A>) => ReaderStreamEither<R, E, B>
```

Added in v0.9.2

## chainReaderK

**Signature**

```ts
export declare const chainReaderK: <A, R, B>(
  f: (a: A) => Re.Reader<R, B>,
) => <E>(ma: ReaderStreamEither<R, E, A>) => ReaderStreamEither<R, E, B>
```

Added in v0.9.2

## chainReaderKW

**Signature**

```ts
export declare const chainReaderKW: <A, R1, B>(
  f: (a: A) => Re.Reader<R1, B>,
) => <R2, E>(ma: ReaderStreamEither<R2, E, A>) => ReaderStreamEither<R1 & R2, E, B>
```

Added in v0.13.9

## chainReaderStreamK

**Signature**

```ts
export declare const chainReaderStreamK: <A, R1, B>(
  f: (value: A) => RS.ReaderStream<R1, B>,
) => <R2, E>(hkt: ReaderStreamEither<R2, E, A>) => ReaderStreamEither<R1 & R2, E, B>
```

Added in v0.13.9

## chainRec

**Signature**

```ts
export declare function chainRec<A, R, E, B>(
  f: (value: A) => ReaderStreamEither<R, E, Ei.Either<A, B>>,
): (value: A) => ReaderStreamEither<R, E, B>
```

Added in v0.9.2

## chainResumeK

**Signature**

```ts
export declare const chainResumeK: <A, B>(
  f: (value: A) => Resume<B>,
) => <R, E>(hkt: ReaderStreamEither<R, E, A>) => ReaderStreamEither<R, E, B>
```

Added in v0.9.2

## chainStreamK

**Signature**

```ts
export declare const chainStreamK: <A, B>(
  f: (value: A) => S.Stream<B>,
) => <R, E>(hkt: ReaderStreamEither<R, E, A>) => ReaderStreamEither<R, E, B>
```

Added in v0.9.2

## chainTaskK

**Signature**

```ts
export declare const chainTaskK: <A, B>(
  f: (a: A) => Task<B>,
) => <R, E>(first: ReaderStreamEither<R, E, A>) => ReaderStreamEither<R, E, B>
```

Added in v0.9.2

## chainW

**Signature**

```ts
export declare const chainW: <A, R1, E, B>(
  f: (a: A) => Re.Reader<R1, SE.StreamEither<E, B>>,
) => <R2>(ma: Re.Reader<R2, SE.StreamEither<E, A>>) => Re.Reader<R1 & R2, SE.StreamEither<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): <R>(
    ma: ReaderStreamEither<R, E, A>,
  ) => ReaderStreamEither<R, E, B>
  <A, E>(predicate: Predicate<A>, onFalse: (a: A) => E): <R, B>(
    mb: ReaderStreamEither<R, E, B>,
  ) => ReaderStreamEither<R, E, B>
}
```

Added in v0.9.2

## flap

**Signature**

```ts
export declare const flap: <A>(
  a: A,
) => <R, E, B>(fab: ReaderStreamEither<R, E, (a: A) => B>) => ReaderStreamEither<R, E, B>
```

Added in v0.9.2

## getOrElse

**Signature**

```ts
export declare const getOrElse: <E, A>(
  onLeft: (e: E) => A,
) => <FE>(ma: RS.ReaderStream<FE, Ei.Either<E, A>>) => RS.ReaderStream<FE, A>
```

Added in v0.9.2

## getOrElseE

**Signature**

```ts
export declare const getOrElseE: <E, ME, A>(
  onLeft: (e: E) => RS.ReaderStream<ME, A>,
) => (ma: RS.ReaderStream<ME, Ei.Either<E, A>>) => RS.ReaderStream<ME, A>
```

Added in v0.9.2

## getOrElseEW

**Signature**

```ts
export declare const getOrElseEW: <E, R1, A>(
  onLeft: (e: E) => RS.ReaderStream<R1, A>,
) => <R2>(ma: RS.ReaderStream<R2, Ei.Either<E, A>>) => RS.ReaderStream<R1 & R2, A>
```

Added in v0.9.2

## map

**Signature**

```ts
export declare const map: <A, B>(
  f: (a: A) => B,
) => <R, E>(fa: Re.Reader<R, SE.StreamEither<E, A>>) => Re.Reader<R, SE.StreamEither<E, B>>
```

Added in v0.9.2

## mapLeft

**Signature**

```ts
export declare const mapLeft: <E, G>(
  f: (e: E) => G,
) => <FE, A>(fea: RS.ReaderStream<FE, Ei.Either<E, A>>) => RS.ReaderStream<FE, Ei.Either<G, A>>
```

Added in v0.9.2

## orElse

**Signature**

```ts
export declare const orElse: <E1, ME, E2, A>(
  onLeft: (e: E1) => RS.ReaderStream<ME, Ei.Either<E2, A>>,
) => (ma: RS.ReaderStream<ME, Ei.Either<E1, A>>) => RS.ReaderStream<ME, Ei.Either<E2, A>>
```

Added in v0.9.2

## orElseFirst

**Signature**

```ts
export declare const orElseFirst: <E, ME, B>(
  onLeft: (e: E) => RS.ReaderStream<ME, Ei.Either<E, B>>,
) => <A>(ma: RS.ReaderStream<ME, Ei.Either<E, A>>) => RS.ReaderStream<ME, Ei.Either<E, A>>
```

Added in v0.9.2

## orLeft

**Signature**

```ts
export declare const orLeft: <E1, ME, E2>(
  onLeft: (e: E1) => RS.ReaderStream<ME, E2>,
) => <A>(fa: RS.ReaderStream<ME, Ei.Either<E1, A>>) => RS.ReaderStream<ME, Ei.Either<E2, A>>
```

Added in v0.9.2

## provideAll

**Signature**

```ts
export declare const provideAll: <A>(
  provided: A,
) => <E, B>(hkt: ReaderStreamEither<Partial<A>, E, B>) => ReaderStreamEither<unknown, E, B>
```

Added in v0.13.9

## provideAllWithEnv

**Signature**

```ts
export declare const provideAllWithEnv: <R, A>(
  env: Env<R, A>,
) => <E, B>(hkt: ReaderStreamEither<A, E, B>) => ReaderStreamEither<R, E, B>
```

Added in v0.13.9

## provideAllWithReaderStream

**Signature**

```ts
export declare const provideAllWithReaderStream: <R, A>(
  stream: RS.ReaderStream<R, A>,
) => <E, B>(hkt: ReaderStreamEither<A, E, B>) => ReaderStreamEither<R, E, B>
```

Added in v0.13.9

## provideSome

**Signature**

```ts
export declare const provideSome: <A>(
  provided: A,
) => <B, E, C>(hkt: ReaderStreamEither<A & B, E, C>) => ReaderStreamEither<B, E, C>
```

Added in v0.13.9

## provideSomeWithEnv

**Signature**

```ts
export declare const provideSomeWithEnv: <E, A>(
  env: Env<E, A>,
) => P.Provider3<'@typed/fp/ReaderStreamEither', A, E, never>
```

Added in v0.13.9

## provideSomeWithReaderStream

**Signature**

```ts
export declare const provideSomeWithReaderStream: <E, A>(
  stream: RS.ReaderStream<E, A>,
) => P.Provider3<'@typed/fp/ReaderStreamEither', A, E, never>
```

Added in v0.13.9

## swap

**Signature**

```ts
export declare const swap: <FE, E, A>(
  ma: RS.ReaderStream<FE, Ei.Either<E, A>>,
) => RS.ReaderStream<FE, Ei.Either<A, E>>
```

Added in v0.9.2

## toUnion

**Signature**

```ts
export declare const toUnion: <FE, E, A>(
  fa: RS.ReaderStream<FE, Ei.Either<E, A>>,
) => RS.ReaderStream<FE, E | A>
```

Added in v0.9.2

## tupled

**Signature**

```ts
export declare const tupled: <R, E, A>(
  fa: ReaderStreamEither<R, E, A>,
) => ReaderStreamEither<R, E, readonly [A]>
```

Added in v0.9.2

## useAll

**Signature**

```ts
export declare const useAll: <A>(
  provided: A,
) => <E, B>(hkt: ReaderStreamEither<Partial<A>, E, B>) => ReaderStreamEither<unknown, E, B>
```

Added in v0.13.9

## useAllWithEnv

**Signature**

```ts
export declare const useAllWithEnv: <R, A>(
  env: Env<R, A>,
) => <E, B>(hkt: ReaderStreamEither<A, E, B>) => ReaderStreamEither<R, E, B>
```

Added in v0.13.9

## useAllWithReaderStream

**Signature**

```ts
export declare const useAllWithReaderStream: <R, A>(
  stream: RS.ReaderStream<R, A>,
) => <E, B>(hkt: ReaderStreamEither<A, E, B>) => ReaderStreamEither<R, E, B>
```

Added in v0.13.9

## useSome

**Signature**

```ts
export declare const useSome: <A>(
  provided: A,
) => <B, E, C>(hkt: ReaderStreamEither<A & B, E, C>) => ReaderStreamEither<B, E, C>
```

Added in v0.13.9

## useSomeWithEnv

**Signature**

```ts
export declare const useSomeWithEnv: <E, A>(
  env: Env<E, A>,
) => P.Provider3<'@typed/fp/ReaderStreamEither', A, E, never>
```

Added in v0.13.9

## useSomeWithReaderStream

**Signature**

```ts
export declare const useSomeWithReaderStream: <E, A>(
  stream: RS.ReaderStream<E, A>,
) => P.Provider3<'@typed/fp/ReaderStreamEither', A, E, never>
```

Added in v0.13.9

# Constructor

## ask

**Signature**

```ts
export declare const ask: <R, E>() => ReaderStreamEither<R, E, R>
```

Added in v0.9.2

## asks

**Signature**

```ts
export declare const asks: <R, A, E>(f: (r: R) => A) => ReaderStreamEither<R, E, A>
```

Added in v0.9.2

## fromEither

**Signature**

```ts
export declare const fromEither: NaturalTransformation23<'Either', '@typed/fp/ReaderStreamEither'>
```

Added in v0.9.2

## fromEitherK

**Signature**

```ts
export declare const fromEitherK: <A, E, B>(
  f: (...a: A) => Ei.Either<E, B>,
) => <R>(...a: A) => ReaderStreamEither<R, E, B>
```

Added in v0.9.2

## fromEnv

**Signature**

```ts
export declare const fromEnv: NaturalTransformation23R<
  '@typed/fp/Env',
  '@typed/fp/ReaderStreamEither'
>
```

Added in v0.9.2

## fromEnvK

**Signature**

```ts
export declare const fromEnvK: <A, R, B>(
  f: (...args: A) => Env<R, B>,
) => <E>(...args: A) => ReaderStreamEither<R, E, B>
```

Added in v0.9.2

## fromIO

**Signature**

```ts
export declare const fromIO: NaturalTransformation13<'IO', '@typed/fp/ReaderStreamEither'>
```

Added in v0.9.2

## fromIOK

**Signature**

```ts
export declare const fromIOK: <A, B>(
  f: (...a: A) => IO<B>,
) => <R, E>(...a: A) => ReaderStreamEither<R, E, B>
```

Added in v0.9.2

## fromOption

**Signature**

```ts
export declare const fromOption: <E>(
  onNone: Lazy<E>,
) => NaturalTransformation13C<'Option', '@typed/fp/ReaderStreamEither', E>
```

Added in v0.9.2

## fromOptionK

**Signature**

```ts
export declare const fromOptionK: <E>(
  onNone: Lazy<E>,
) => <A, B>(f: (...a: A) => Option<B>) => <R>(...a: A) => ReaderStreamEither<R, E, B>
```

Added in v0.9.2

## fromPredicate

**Signature**

```ts
export declare const fromPredicate: {
  <A, B>(refinement: Refinement<A, B>): <R>(a: A) => ReaderStreamEither<R, A, B>
  <A>(predicate: Predicate<A>): <R, B>(b: B) => ReaderStreamEither<R, B, B>
}
```

Added in v0.9.2

## fromReader

**Signature**

```ts
export declare const fromReader: <R, A, E>(
  ma: Re.Reader<R, A>,
) => Re.Reader<R, SE.StreamEither<E, A>>
```

Added in v0.9.2

## fromReaderK

**Signature**

```ts
export declare const fromReaderK: <A, R, B>(
  f: (...a: A) => Re.Reader<R, B>,
) => <E>(...a: A) => ReaderStreamEither<R, E, B>
```

Added in v0.9.2

## fromReaderStream

**Signature**

```ts
export declare const fromReaderStream: <FE, A, E>(
  fa: RS.ReaderStream<FE, A>,
) => RS.ReaderStream<FE, Ei.Either<E, A>>
```

Added in v0.9.2

## fromReaderStreamK

**Signature**

```ts
export declare const fromReaderStreamK: <A, R, B>(
  f: (...args: A) => RS.ReaderStream<R, B>,
) => <E>(...args: A) => ReaderStreamEither<R, E, B>
```

Added in v0.13.9

## fromReaderStreamL

**Signature**

```ts
export declare const fromReaderStreamL: <FE, E, A>(
  fe: RS.ReaderStream<FE, E>,
) => RS.ReaderStream<FE, Ei.Either<E, A>>
```

Added in v0.9.2

## fromResume

**Signature**

```ts
export declare const fromResume: NaturalTransformation13<
  '@typed/fp/Resume',
  '@typed/fp/ReaderStreamEither'
>
```

Added in v0.9.2

## fromResumeK

**Signature**

```ts
export declare const fromResumeK: <A, B>(
  f: (...args: A) => Resume<B>,
) => <R, E>(...args: A) => ReaderStreamEither<R, E, B>
```

Added in v0.9.2

## fromStream

**Signature**

```ts
export declare const fromStream: NaturalTransformation13<
  '@most/core/Stream',
  '@typed/fp/ReaderStreamEither'
>
```

Added in v0.9.2

## fromStreamK

**Signature**

```ts
export declare const fromStreamK: <A, B>(
  f: (...args: A) => S.Stream<B>,
) => <R, E>(...args: A) => ReaderStreamEither<R, E, B>
```

Added in v0.9.2

## fromTask

**Signature**

```ts
export declare const fromTask: NaturalTransformation13<'Task', '@typed/fp/ReaderStreamEither'>
```

Added in v0.9.2

## fromTaskK

**Signature**

```ts
export declare const fromTaskK: <A, B>(
  f: (...a: A) => Task<B>,
) => <R, E>(...a: A) => ReaderStreamEither<R, E, B>
```

Added in v0.9.2

## left

**Signature**

```ts
export declare const left: <E, FE, A>(e: E) => RS.ReaderStream<FE, Ei.Either<E, A>>
```

Added in v0.9.2

## of

**Signature**

```ts
export declare const of: <A, R, E>(a: A) => Re.Reader<R, SE.StreamEither<E, A>>
```

Added in v0.9.2

## right

**Signature**

```ts
export declare const right: <A, FE, E>(a: A) => RS.ReaderStream<FE, Ei.Either<E, A>>
```

Added in v0.9.2

## zero

**Signature**

```ts
export declare const zero: ReaderStreamEither<unknown, never, any>
```

Added in v0.9.2

# Deconstructor

## match

**Signature**

```ts
export declare const match: <E, B, A>(
  onLeft: (e: E) => B,
  onRight: (a: A) => B,
) => <FE>(ma: RS.ReaderStream<FE, Ei.Either<E, A>>) => RS.ReaderStream<FE, B>
```

Added in v0.9.2

## matchE

**Signature**

```ts
export declare const matchE: <E, ME, B, A>(
  onLeft: (e: E) => RS.ReaderStream<ME, B>,
  onRight: (a: A) => RS.ReaderStream<ME, B>,
) => (ma: RS.ReaderStream<ME, Ei.Either<E, A>>) => RS.ReaderStream<ME, B>
```

Added in v0.9.2

## matchEW

**Signature**

```ts
export declare const matchEW: <E, R1, B, A, R2>(
  onLeft: (e: E) => RS.ReaderStream<R1, B>,
  onRight: (a: A) => RS.ReaderStream<R2, B>,
) => <R3>(
  ma: RS.ReaderStream<R3, Ei.Either<E, A>>,
) => RS.ReaderStream<R1 & R2 & R3, Ei.Either<E, B>>
```

Added in v0.9.2

# Instance

## Alt

**Signature**

```ts
export declare const Alt: ALT.Alt3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.9.2

## Alternative

**Signature**

```ts
export declare const Alternative: ALTERNATIVE.Alternative3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.9.2

## Applicative

**Signature**

```ts
export declare const Applicative: App.Applicative3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.9.2

## Apply

**Signature**

```ts
export declare const Apply: Ap.Apply3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.9.2

## Bifunctor

**Signature**

```ts
export declare const Bifunctor: Bi.Bifunctor3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.9.2

## Chain

**Signature**

```ts
export declare const Chain: Ch.Chain3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.9.2

## ChainRec

**Signature**

```ts
export declare const ChainRec: ChainRec3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.9.2

## FromEither

**Signature**

```ts
export declare const FromEither: FEi.FromEither3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.9.2

## FromEnv

**Signature**

```ts
export declare const FromEnv: FE.FromEnv3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.9.2

## FromIO

**Signature**

```ts
export declare const FromIO: FIO.FromIO3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.9.2

## FromReader

**Signature**

```ts
export declare const FromReader: FR.FromReader3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.9.2

## FromReaderStream

**Signature**

```ts
export declare const FromReaderStream: FRS.FromReaderStream3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.13.9

## FromResume

**Signature**

```ts
export declare const FromResume: FRe.FromResume3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.9.2

## FromStream

**Signature**

```ts
export declare const FromStream: FS.FromStream3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.9.2

## FromTask

**Signature**

```ts
export declare const FromTask: FT.FromTask3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.9.2

## Functor

**Signature**

```ts
export declare const Functor: F.Functor3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.9.2

## Monad

**Signature**

```ts
export declare const Monad: Monad3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.9.2

## MonadRec

**Signature**

```ts
export declare const MonadRec: MonadRec3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.9.2

## Pointed

**Signature**

```ts
export declare const Pointed: Pointed3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.9.2

## ProvideAll

**Signature**

```ts
export declare const ProvideAll: P.ProvideAll3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.13.9

## ProvideSome

**Signature**

```ts
export declare const ProvideSome: P.ProvideSome3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.13.9

## UseAll

**Signature**

```ts
export declare const UseAll: P.UseAll3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.13.9

## UseSome

**Signature**

```ts
export declare const UseSome: P.UseSome3<'@typed/fp/ReaderStreamEither'>
```

Added in v0.13.9

# Model

## ReaderStreamEither (interface)

Env is specialization of Reader<R, Resume<A>>

**Signature**

```ts
export interface ReaderStreamEither<R, E, A> extends Re.Reader<R, SE.StreamEither<E, A>> {}
```

Added in v0.9.2

# Type-level

## RequirementsOf (type alias)

**Signature**

```ts
export type RequirementsOf<A> = A extends ReaderStreamEither<infer R, any, any> ? R : never
```

Added in v0.9.2

# Type-lvel

## LeftOf (type alias)

**Signature**

```ts
export type LeftOf<A> = A extends ReaderStreamEither<any, infer R, any> ? R : never
```

Added in v0.9.2

## RightOf (type alias)

**Signature**

```ts
export type RightOf<A> = A extends ReaderStreamEither<any, any, infer R> ? R : never
```

Added in v0.9.2

# Typeclass Consructor

## getApplicativeMonoid

**Signature**

```ts
export declare const getApplicativeMonoid: <A, R, E>(
  M: Monoid<A>,
) => Monoid<ReaderStreamEither<R, E, A>>
```

Added in v0.9.2

# Typeclass Constructor

## altValidation

**Signature**

```ts
export declare const altValidation: <A>(
  semigroup: Semigroup<A>,
) => <ME, A>(
  second: Lazy<RS.ReaderStream<ME, Ei.Either<A, A>>>,
) => (first: RS.ReaderStream<ME, Ei.Either<A, A>>) => RS.ReaderStream<ME, Ei.Either<A, A>>
```

Added in v0.9.2

## getApplySemigroup

**Signature**

```ts
export declare const getApplySemigroup: <A, R, E>(
  S: Semigroup<A>,
) => Semigroup<ReaderStreamEither<R, E, A>>
```

Added in v0.9.2

# URI

## URI

**Signature**

```ts
export declare const URI: '@typed/fp/ReaderStreamEither'
```

Added in v0.9.2

## URI (type alias)

**Signature**

```ts
export type URI = typeof URI
```

Added in v0.9.2
