Hyperlinkv0.8.0-beta.28

Trie

Trie.filterMapconsteffect/Trie.ts:792
<A, B, X>(f: (input: A, key: string) => Result<B, X>): (
  self: Trie<A>
) => Trie<B>
<A, B, X>(
  self: Trie<A>,
  f: (input: A, key: string) => Result<B, X>
): Trie<B>

Maps over the entries of the Trie using the specified filter and keeps only successful results.

Example (Filtering and mapping entries)

import { Equal, Result, Trie } from "effect"
import * as assert from "node:assert"

const trie = Trie.empty<number>().pipe(
  Trie.insert("shells", 0),
  Trie.insert("sells", 1),
  Trie.insert("she", 2)
)

const trieMapV = Trie.empty<number>().pipe(
  Trie.insert("she", 2)
)

const trieMapK = Trie.empty<number>().pipe(
  Trie.insert("shells", 0),
  Trie.insert("sells", 1)
)

assert.equal(
  Equal.equals(
    Trie.filterMap(trie, (v) => v > 1 ? Result.succeed(v) : Result.failVoid),
    trieMapV
  ),
  true
)
assert.equal(
  Equal.equals(
    Trie.filterMap(
      trie,
      (v, k) => k.length > 3 ? Result.succeed(v) : Result.failVoid
    ),
    trieMapK
  ),
  true
)
filtering
Source effect/Trie.ts:7924 lines
export const filterMap: {
  <A, B, X>(f: (input: A, key: string) => Result<B, X>): (self: Trie<A>) => Trie<B>
  <A, B, X>(self: Trie<A>, f: (input: A, key: string) => Result<B, X>): Trie<B>
} = TR.filterMap