Skip to content
Effect 4.0 is here. One ecosystem. Zero dependencies.

TMap

41 exports Since v2.0.0 Source

Constructors

Since v2.0.0

Makes an empty TMap.

Signature

declare const empty: <K, V>() => STM.STM<TMap<K, V>>

Creates a new TMap from an iterable collection of key/value pairs.

Signature

declare const fromIterable: <K, V>(iterable: Iterable<readonly [K, V]>) => STM.STM<TMap<K, V>>
Since v2.0.0

Makes a new TMap that is initialized with specified values.

Signature

declare const make: <K, V>(...entries: Array<readonly [K, V]>) => STM.STM<TMap<K, V>>

Destructors

Since v2.0.0

Collects all bindings into an Array.

Signature

declare const toArray: <K, V>(self: TMap<K, V>) => STM.STM<Array<[K, V]>>
Since v2.0.0

Collects all bindings into a Chunk.

Signature

declare const toChunk: <K, V>(self: TMap<K, V>) => STM.STM<Chunk.Chunk<[K, V]>>

Collects all bindings into a HashMap.

Signature

declare const toHashMap: <K, V>(self: TMap<K, V>) => STM.STM<HashMap.HashMap<K, V>>
Since v2.0.0

Collects all bindings into a Map.

Signature

declare const toMap: <K, V>(self: TMap<K, V>) => STM.STM<ReadonlyMap<K, V>>

Elements

Since v2.0.0

Finds the key/value pair matching the specified predicate, and uses the provided function to extract a value out of it.

Signature

declare const find: {
<K, V, A>(pf: (key: K, value: V) => Option<A>): (self: TMap<K, V>) => STM<Option<A>>;
<K, V, A>(self: TMap<K, V>, pf: (key: K, value: V) => Option<A>): STM<Option<A>>;
}
Since v2.0.0

Finds all the key/value pairs matching the specified predicate, and uses the provided function to extract values out them.

Signature

declare const findAll: {
<K, V, A>(pf: (key: K, value: V) => Option<A>): (self: TMap<K, V>) => STM<Array<A>>;
<K, V, A>(self: TMap<K, V>, pf: (key: K, value: V) => Option<A>): STM<Array<A>>;
}

Finds all the key/value pairs matching the specified predicate, and uses the provided effectful function to extract values out of them..

Signature

declare const findAllSTM: {
<K, V, A, E, R>(pf: (key: K, value: V) => STM<A, Option<E>, R>): (self: TMap<K, V>) => STM<Array<A>, E, R>;
<K, V, A, E, R>(self: TMap<K, V>, pf: (key: K, value: V) => STM<A, Option<E>, R>): STM<Array<A>, E, R>;
}
Since v2.0.0

Finds the key/value pair matching the specified predicate, and uses the provided effectful function to extract a value out of it.

Signature

declare const findSTM: {
<K, V, A, E, R>(f: (key: K, value: V) => STM<A, Option<E>, R>): (self: TMap<K, V>) => STM<Option<A>, E, R>;
<K, V, A, E, R>(self: TMap<K, V>, f: (key: K, value: V) => STM<A, Option<E>, R>): STM<Option<A>, E, R>;
}
Since v2.0.0

Atomically performs transactional-effect for each binding present in map.

Signature

declare const forEach: {
<K, V, X, E, R>(f: (key: K, value: V) => STM<X, E, R>): (self: TMap<K, V>) => STM<void, E, R>;
<K, V, X, E, R>(self: TMap<K, V>, f: (key: K, value: V) => STM<X, E, R>): STM<void, E, R>;
}
Since v2.0.0

Retrieves value associated with given key.

Signature

declare const get: {
<K>(key: K): <V>(self: TMap<K, V>) => STM<Option<V>>;
<K, V>(self: TMap<K, V>, key: K): STM<Option<V>>;
}

Retrieves value associated with given key or default value, in case the key isn't present.

Signature

declare const getOrElse: {
<K, V>(key: K, fallback: LazyArg<V>): (self: TMap<K, V>) => STM<V>;
<K, V>(self: TMap<K, V>, key: K, fallback: LazyArg<V>): STM<V>;
}
Since v2.0.0

Tests whether or not map contains a key.

Signature

declare const has: {
<K>(key: K): <V>(self: TMap<K, V>) => STM<boolean>;
<K, V>(self: TMap<K, V>, key: K): STM<boolean>;
}
Since v2.0.0

Collects all keys stored in map.

Signature

declare const keys: <K, V>(self: TMap<K, V>) => STM.STM<Array<K>>
Since v2.0.0

Collects all values stored in map.

Signature

declare const values: <K, V>(self: TMap<K, V>) => STM.STM<Array<V>>

Folding

Since v2.0.0

Atomically folds using a pure function.

Signature

declare const reduce: {
<Z, K, V>(zero: Z, f: (acc: Z, value: V, key: K) => Z): (self: TMap<K, V>) => STM<Z>;
<K, V, Z>(self: TMap<K, V>, zero: Z, f: (acc: Z, value: V, key: K) => Z): STM<Z>;
}

Atomically folds using a transactional function.

Signature

declare const reduceSTM: {
<Z, V, K, R, E>(zero: Z, f: (acc: Z, value: V, key: K) => STM<Z, E, R>): (self: TMap<K, V>) => STM<Z, E, R>;
<Z, V, K, R, E>(self: TMap<K, V>, zero: Z, f: (acc: Z, value: V, key: K) => STM<Z, E, R>): STM<Z, E, R>;
}

Getters

Since v2.0.0

Tests if the map is empty or not.

Signature

declare const isEmpty: <K, V>(self: TMap<K, V>) => STM.STM<boolean>
Since v2.0.0

Returns the number of bindings.

Signature

declare const size: <K, V>(self: TMap<K, V>) => STM.STM<number>

Models

TMap

interface
Since v2.0.0

Transactional map implemented on top of TRef and TArray. Resolves conflicts via chaining.

Signature

interface TMap<in out K, in out V> extends Variance<K, V> {}

Mutations

Since v2.0.0

If the key is not already associated with a value, stores the provided value, otherwise merge the existing value with the new one using function f and store the result.

Signature

declare const merge: {
<K, V>(key: K, value: V, f: (x: V, y: V) => V): (self: TMap<K, V>) => STM<V>;
<K, V>(self: TMap<K, V>, key: K, value: V, f: (x: V, y: V) => V): STM<V>;
}
Since v2.0.0

Removes binding for given key.

Signature

declare const remove: {
<K>(key: K): <V>(self: TMap<K, V>) => STM<void>;
<K, V>(self: TMap<K, V>, key: K): STM<void>;
}

Deletes all entries associated with the specified keys.

Signature

declare const removeAll: {
<K>(keys: Iterable<K>): <V>(self: TMap<K, V>) => STM<void>;
<K, V>(self: TMap<K, V>, keys: Iterable<K>): STM<void>;
}
Since v2.0.0

Removes entries from a TMap that satisfy the specified predicate and returns the removed entries (or void if discard = true).

Signature

declare const removeIf: {
<K, V>(predicate: (key: K, value: V) => boolean, options: {
readonly discard: true;
}): (self: TMap<K, V>) => STM<void>;
<K, V>(predicate: (key: K, value: V) => boolean, options?: {
readonly discard: false;
}): (self: TMap<K, V>) => STM<Array<[K, V]>>;
<K, V>(self: TMap<K, V>, predicate: (key: K, value: V) => boolean, options: {
readonly discard: true;
}): STM<void>;
<K, V>(self: TMap<K, V>, predicate: (key: K, value: V) => boolean, options?: {
readonly discard: false;
}): STM<Array<[K, V]>>;
}
Since v2.0.0

Retains entries in a TMap that satisfy the specified predicate and returns the removed entries (or void if discard = true).

Signature

declare const retainIf: {
<K, V>(predicate: (key: K, value: V) => boolean, options: {
readonly discard: true;
}): (self: TMap<K, V>) => STM<void>;
<K, V>(predicate: (key: K, value: V) => boolean, options?: {
readonly discard: false;
}): (self: TMap<K, V>) => STM<Array<[K, V]>>;
<K, V>(self: TMap<K, V>, predicate: (key: K, value: V) => boolean, options: {
readonly discard: true;
}): STM<void>;
<K, V>(self: TMap<K, V>, predicate: (key: K, value: V) => boolean, options?: {
readonly discard: false;
}): STM<Array<[K, V]>>;
}
Since v2.0.0

Stores new binding into the map.

Signature

declare const set: {
<K, V>(key: K, value: V): (self: TMap<K, V>) => STM<void>;
<K, V>(self: TMap<K, V>, key: K, value: V): STM<void>;
}

Stores new binding in the map if it does not already exist.

Signature

declare const setIfAbsent: {
<K, V>(key: K, value: V): (self: TMap<K, V>) => STM<void>;
<K, V>(self: TMap<K, V>, key: K, value: V): STM<void>;
}

Takes the first matching value, or retries until there is one.

Signature

declare const takeFirst: {
<K, V, A>(pf: (key: K, value: V) => Option<A>): (self: TMap<K, V>) => STM<A>;
<K, V, A>(self: TMap<K, V>, pf: (key: K, value: V) => Option<A>): STM<A>;
}

Takes the first matching value, or retries until there is one.

Signature

declare const takeFirstSTM: {
<K, V, A, E, R>(pf: (key: K, value: V) => STM<A, Option<E>, R>): (self: TMap<K, V>) => STM<A, E, R>;
<K, V, A, E, R>(self: TMap<K, V>, pf: (key: K, value: V) => STM<A, Option<E>, R>): STM<A, E, R>;
}
Since v2.0.0

Takes all matching values, or retries until there is at least one.

Signature

declare const takeSome: {
<K, V, A>(pf: (key: K, value: V) => Option<A>): (self: TMap<K, V>) => STM<[A, ...Array<A>]>;
<K, V, A>(self: TMap<K, V>, pf: (key: K, value: V) => Option<A>): STM<[A, ...Array<A>]>;
}

Takes all matching values, or retries until there is at least one.

Signature

declare const takeSomeSTM: {
<K, V, A, E, R>(pf: (key: K, value: V) => STM<A, Option<E>, R>): (self: TMap<K, V>) => STM<[A, ...Array<A>], E, R>;
<K, V, A, E, R>(self: TMap<K, V>, pf: (key: K, value: V) => STM<A, Option<E>, R>): STM<[A, ...Array<A>], E, R>;
}

Atomically updates all bindings using a pure function.

Signature

declare const transform: {
<K, V>(f: (key: K, value: V) => readonly [K, V]): (self: TMap<K, V>) => STM<void>;
<K, V>(self: TMap<K, V>, f: (key: K, value: V) => readonly [K, V]): STM<void>;
}

Atomically updates all bindings using a transactional function.

Signature

declare const transformSTM: {
<K, V, R, E>(f: (key: K, value: V) => STM<readonly [K, V], E, R>): (self: TMap<K, V>) => STM<void, E, R>;
<K, V, R, E>(self: TMap<K, V>, f: (key: K, value: V) => STM<readonly [K, V], E, R>): STM<void, E, R>;
}

Atomically updates all values using a pure function.

Signature

declare const transformValues: {
<V>(f: (value: V) => V): <K>(self: TMap<K, V>) => STM<void>;
<K, V>(self: TMap<K, V>, f: (value: V) => V): STM<void>;
}

Atomically updates all values using a transactional function.

Signature

declare const transformValuesSTM: {
<V, R, E>(f: (value: V) => STM<V, E, R>): <K>(self: TMap<K, V>) => STM<void, E, R>;
<K, V, R, E>(self: TMap<K, V>, f: (value: V) => STM<V, E, R>): STM<void, E, R>;
}

Updates the mapping for the specified key with the specified function, which takes the current value of the key as an input, if it exists, and either returns Some with a new value to indicate to update the value in the map or None to remove the value from the map. Returns Some with the updated value or None if the value was removed from the map.

Signature

declare const updateWith: {
<K, V>(key: K, f: (value: Option<V>) => Option<V>): (self: TMap<K, V>) => STM<Option<V>>;
<K, V>(self: TMap<K, V>, key: K, f: (value: Option<V>) => Option<V>): STM<Option<V>>;
}

Other

Since v2.0.0

Symbols

Signature

declare const TMapTypeId: unique symbol
Since v2.0.0

Signature

type TMapTypeId = typeof TMapTypeId