MCPcopy Create free account
hub / github.com/effect-app/libs / partitionMap_

Function partitionMap_

packages/effect-app/src/Set.ts:352–380  ·  view source on GitHub ↗
(
  EB: Equivalence.Equivalence<B>,
  EC: Equivalence.Equivalence<C>
)

Source from the content-addressed store, hash-verified

350 * Partition elements according to f
351 */
352export function partitionMap_<B, C>(
353 EB: Equivalence.Equivalence<B>,
354 EC: Equivalence.Equivalence<C>
355): <A>(set: Set<A>, f: (a: A) => Result.Result<C, B>) => readonly [Set<B>, Set<C>] {
356 return <A>(set: Set<A>, f: (a: A) => Result.Result<C, B>) => {
357 const values = set.values()
358 let e: Next<A>
359 const left = new Set<B>()
360 const right = new Set<C>()
361 const hasB = elem_(EB)
362 const hasC = elem_(EC)
363 while (!(e = values.next() as any).done) {
364 const v = f(e.value)
365 switch (v._tag) {
366 case "Failure":
367 if (!hasB(left, v.failure)) {
368 left.add(v.failure)
369 }
370 break
371 case "Success":
372 if (!hasC(right, v.success)) {
373 right.add(v.success)
374 }
375 break
376 }
377 }
378 return tuple(left, right)
379 }
380}
381
382/**
383 * Form the set difference (`x` - `y`)

Callers 1

partitionMapFunction · 0.85

Calls 5

tupleFunction · 0.90
elem_Function · 0.85
fFunction · 0.70
nextMethod · 0.65
addMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…