@typed/fp
Version:
Data Structures and Resources for fp-ts
630 lines (418 loc) • 9.76 kB
Markdown
---
title: Ref.ts
nav_order: 50
parent: Modules
---
## Ref overview
`Ref` is an abstraction for managing data-driven applications using [Env](./Env.ts.md).
Added in v0.11.0
---
<h2 class="text-delta">Table of contents</h2>
- [Combinator](#combinator)
- [ap](#ap)
- [apFirst](#apfirst)
- [apFirstW](#apfirstw)
- [apS](#aps)
- [apSW](#apsw)
- [apSecond](#apsecond)
- [apSecondW](#apsecondw)
- [apT](#apt)
- [apTW](#aptw)
- [chainEnvK](#chainenvk)
- [chainFirstEnvK](#chainfirstenvk)
- [chainFirstIOK](#chainfirstiok)
- [chainFirstReaderK](#chainfirstreaderk)
- [chainFirstResumeK](#chainfirstresumek)
- [chainFirstTaskK](#chainfirsttaskk)
- [chainIOK](#chainiok)
- [chainReaderK](#chainreaderk)
- [chainResumeK](#chainresumek)
- [chainTaskK](#chaintaskk)
- [compose](#compose)
- [local](#local)
- [localE](#locale)
- [map](#map)
- [promap](#promap)
- [promapE](#promape)
- [provideAll](#provideall)
- [provideSome](#providesome)
- [struct](#struct)
- [useAll](#useall)
- [useSome](#usesome)
- [Constructor](#constructor)
- [fromKV](#fromkv)
- [kv](#kv)
- [Instance](#instance)
- [Apply](#apply)
- [Functor](#functor)
- [Profunctor](#profunctor)
- [Provide](#provide)
- [ProvideAll](#provideall)
- [ProvideSome](#providesome)
- [Semigroupoid](#semigroupoid)
- [UseAll](#useall)
- [UseSome](#usesome)
- [Instance Constructor](#instance-constructor)
- [FromKV](#fromkv)
- [Model](#model)
- [Ref (interface)](#ref-interface)
- [Type-level](#type-level)
- [InputOf (type alias)](#inputof-type-alias)
- [OutputOf (type alias)](#outputof-type-alias)
- [RequirementsOf (type alias)](#requirementsof-type-alias)
- [Typeclass Constructor](#typeclass-constructor)
- [getApplySemigroup](#getapplysemigroup)
- [URI](#uri)
- [URI](#uri-1)
- [URI (type alias)](#uri-type-alias)
---
# Combinator
## ap
**Signature**
```ts
export declare const ap: <E1, I, A>(
fa: Ref<E1, I, A>,
) => <E2, B>(fab: Ref<E2, I, (value: A) => B>) => Ref<E1 & E2, I, B>
```
Added in v0.11.0
## apFirst
**Signature**
```ts
export declare const apFirst: <R, E, B>(
second: Ref<R, E, B>,
) => <A>(first: Ref<R, E, A>) => Ref<R, E, A>
```
Added in v0.11.0
## apFirstW
**Signature**
```ts
export declare const apFirstW: <R1, E, B>(
second: Ref<R1, E, B>,
) => <R2, A>(first: Ref<R2, E, A>) => Ref<R1 & R2, E, A>
```
Added in v0.11.0
## apS
**Signature**
```ts
export declare const apS: <N, A, R, E, B>(
name: Exclude<N, keyof A>,
fb: Ref<R, E, B>,
) => (fa: Ref<R, E, A>) => Ref<R, E, { readonly [K in N | keyof A]: K extends keyof A ? A[K] : B }>
```
Added in v0.11.0
## apSW
**Signature**
```ts
export declare const apSW: <N extends string, A, R1, E, B>(
name: Exclude<N, keyof A>,
fb: Ref<R1, E, B>,
) => <R2>(
fa: Ref<R2, E, A>,
) => Ref<R1 & R2, E, { readonly [K in N | keyof A]: K extends keyof A ? A[K] : B }>
```
Added in v0.11.0
## apSecond
**Signature**
```ts
export declare const apSecond: <R, E, B>(
second: Ref<R, E, B>,
) => <A>(first: Ref<R, E, A>) => Ref<R, E, B>
```
Added in v0.11.0
## apSecondW
**Signature**
```ts
export declare const apSecondW: <R1, E, B>(
second: Ref<R1, E, B>,
) => <R2, A>(first: Ref<R2, E, A>) => Ref<R1 & R2, E, B>
```
Added in v0.11.0
## apT
**Signature**
```ts
export declare const apT: <R, E, B>(
fb: Ref<R, E, B>,
) => <A>(fas: Ref<R, E, A>) => Ref<R, E, readonly [...A, B]>
```
Added in v0.11.0
## apTW
**Signature**
```ts
export declare const apTW: <R1, E, B>(
fb: Ref<R1, E, B>,
) => <R2, A extends readonly unknown[]>(fas: Ref<R2, E, A>) => Ref<R1 & R2, E, readonly [...A, B]>
```
Added in v0.11.0
## chainEnvK
**Signature**
```ts
export declare function chainEnvK<A, E1, B>(f: (value: A) => E.Env<E1, B>)
```
Added in v0.11.0
## chainFirstEnvK
**Signature**
```ts
export declare function chainFirstEnvK<A, E1, B>(f: (value: A) => E.Env<E1, B>)
```
Added in v0.11.0
## chainFirstIOK
**Signature**
```ts
export declare function chainFirstIOK<A, B>(f: (value: A) => IO<B>)
```
Added in v0.11.0
## chainFirstReaderK
**Signature**
```ts
export declare function chainFirstReaderK<A, E1, B>(f: (value: A) => Reader<E1, B>)
```
Added in v0.11.0
## chainFirstResumeK
**Signature**
```ts
export declare function chainFirstResumeK<A, B>(f: (value: A) => Resume<B>)
```
Added in v0.11.0
## chainFirstTaskK
**Signature**
```ts
export declare function chainFirstTaskK<A, B>(f: (value: A) => Task<B>)
```
Added in v0.11.0
## chainIOK
**Signature**
```ts
export declare function chainIOK<A, B>(f: (value: A) => IO<B>)
```
Added in v0.11.0
## chainReaderK
**Signature**
```ts
export declare function chainReaderK<A, E1, B>(f: (value: A) => Reader<E1, B>)
```
Added in v0.11.0
## chainResumeK
**Signature**
```ts
export declare function chainResumeK<A, B>(f: (value: A) => Resume<B>)
```
Added in v0.11.0
## chainTaskK
**Signature**
```ts
export declare function chainTaskK<A, B>(f: (value: A) => Task<B>)
```
Added in v0.11.0
## compose
**Signature**
```ts
export declare const compose: <E2, A, O>(
second: Ref<E2, A, O>,
) => <E1, I>(first: Ref<E1, I, A>) => Ref<E1 & E2, I, O>
```
Added in v0.11.0
## local
**Signature**
```ts
export declare const local: <A, B>(f: (value: A) => B) => <E, C>(ref: Ref<E, B, C>) => Ref<E, A, C>
```
Added in v0.11.0
## localE
**Signature**
```ts
export declare const localE: <A, E1, B>(
f: (value: A) => E.Env<E1, B>,
) => <E2, C>(ref: Ref<E2, B, C>) => Ref<E1 & E2, A, C>
```
Added in v0.12.2
## map
**Signature**
```ts
export declare const map: <A, B>(f: (value: A) => B) => <E, I>(ref: Ref<E, I, A>) => Ref<E, I, B>
```
Added in v0.11.0
## promap
**Signature**
```ts
export declare const promap: <B, A, C, D>(
f: (value: B) => A,
g: (value: C) => D,
) => <E>(ref: Ref<E, A, C>) => Ref<E, B, D>
```
Added in v0.11.0
## promapE
**Signature**
```ts
export declare const promapE: <B, E1, A, C, E2, D>(
f: (value: B) => E.Env<E1, A>,
g: (value: C) => E.Env<E2, D>,
) => <E3>(ref: Ref<E3, A, C>) => Ref<E1 & E2 & E3, B, D>
```
Added in v0.12.2
## provideAll
**Signature**
```ts
export declare const provideAll: <E>(provided: E) => <A, B>(ref: Ref<E, A, B>) => Ref<unknown, A, B>
```
Added in v0.11.0
## provideSome
**Signature**
```ts
export declare const provideSome: <E1>(
provided: E1,
) => <E2, A, B>(ref: Ref<E1 & E2, A, B>) => Ref<E2, A, B>
```
Added in v0.11.0
## struct
**Signature**
```ts
export declare function struct<S extends AnyRefStruct>(
properties: S,
): Ref<RefStructEnv<S>, RefStructInput<S>, RefStructOutput<S>>
```
Added in v0.11.0
## useAll
**Signature**
```ts
export declare const useAll: <E1>(provided: E1) => <A, B>(ref: Ref<E1, A, B>) => Ref<unknown, A, B>
```
Added in v0.11.0
## useSome
**Signature**
```ts
export declare const useSome: <E1>(
provided: E1,
) => <E2, A, B>(ref: Ref<E1 & E2, A, B>) => Ref<E2, A, B>
```
Added in v0.11.0
# Constructor
## fromKV
**Signature**
```ts
export declare const fromKV: <K, E, A>(kv: KV.KV<K, E, A>) => Ref<E & KV.Env, A, A> & KV.KV<K, E, A>
```
Added in v0.11.0
## kv
**Signature**
```ts
export declare const kv: <E, A, K = symbol>(
initial: E.Env<E, A>,
options?: KV.Options<K, A> | undefined,
) => Ref<E & KV.Env, A, A> & KV.KV<K, E, A>
```
Added in v0.11.0
# Instance
## Apply
**Signature**
```ts
export declare const Apply: Ap.Apply3<'@typed/fp/Ref'>
```
Added in v0.11.0
## Functor
**Signature**
```ts
export declare const Functor: Functor3<'@typed/fp/Ref'>
```
Added in v0.11.0
## Profunctor
**Signature**
```ts
export declare const Profunctor: Profunctor3<'@typed/fp/Ref'>
```
Added in v0.11.0
## Provide
**Signature**
```ts
export declare const Provide: P.Provide3<'@typed/fp/Ref'>
```
Added in v0.11.0
## ProvideAll
**Signature**
```ts
export declare const ProvideAll: P.ProvideAll3<'@typed/fp/Ref'>
```
Added in v0.11.0
## ProvideSome
**Signature**
```ts
export declare const ProvideSome: P.ProvideSome3<'@typed/fp/Ref'>
```
Added in v0.11.0
## Semigroupoid
**Signature**
```ts
export declare const Semigroupoid: Semigroupoid3<'@typed/fp/Ref'>
```
Added in v0.11.0
## UseAll
**Signature**
```ts
export declare const UseAll: P.UseAll3<'@typed/fp/Ref'>
```
Added in v0.11.0
## UseSome
**Signature**
```ts
export declare const UseSome: P.UseSome3<'@typed/fp/Ref'>
```
Added in v0.11.0
# Instance Constructor
## FromKV
**Signature**
```ts
export declare const FromKV: FKV.FromKV2<'@typed/fp/Ref', KV.Env>
```
Added in v0.12.0
# Model
## Ref (interface)
**Signature**
```ts
export interface Ref<E, I, O = I> {
readonly get: E.Env<E, O>
readonly has: E.Env<E, boolean>
readonly set: (input: I) => E.Env<E, O>
readonly update: <E2>(f: (value: O) => E.Env<E2, I>) => E.Env<E & E2, O>
readonly remove: E.Env<E, O.Option<O>>
readonly values: RS.ReaderStream<E, O.Option<O>>
}
```
Added in v0.11.0
# Type-level
## InputOf (type alias)
**Signature**
```ts
export type InputOf<A> = [A] extends [Ref<any, infer R, any>] ? R : never
```
Added in v0.11.0
## OutputOf (type alias)
**Signature**
```ts
export type OutputOf<A> = [A] extends [Ref<any, any, infer R>] ? R : never
```
Added in v0.11.0
## RequirementsOf (type alias)
**Signature**
```ts
export type RequirementsOf<A> = [A] extends [Ref<infer R, any, any>] ? R : never
```
Added in v0.11.0
# Typeclass Constructor
## getApplySemigroup
**Signature**
```ts
export declare const getApplySemigroup: <A, R, E>(S: Semigroup<A>) => Semigroup<Ref<R, E, A>>
```
Added in v0.11.0
# URI
## URI
**Signature**
```ts
export declare const URI: '@typed/fp/Ref'
```
Added in v0.11.0
## URI (type alias)
**Signature**
```ts
export type URI = typeof URI
```
Added in v0.11.0