Hyperlinkv0.8.0-beta.28

Filter

Filter.fromPredicateconsteffect/Filter.ts:220
<A, B extends A>(refinement: Predicate.Refinement<A, B>): Filter<
  A,
  B,
  EqualsWith<A, B, A, Exclude<A, B>>
>
<A>(predicate: Predicate.Predicate<A>): Filter<A>

Creates a Filter from a predicate or refinement function.

Details

This is a convenient way to create filters from boolean-returning functions. When the predicate returns true, the input value is passed through unchanged. When it returns false, the fail type is returned.

Example (Creating filters from predicates)

import { Filter, Result } from "effect"

// Create filter from predicate
const positiveNumbers = Filter.fromPredicate((n: number) => n > 0)
const nonEmptyStrings = Filter.fromPredicate((s: string) => s.length > 0)

// Type refinement
const isString = Filter.fromPredicate((x: unknown): x is string =>
  typeof x === "string"
)
constructors
Source effect/Filter.ts:2205 lines
export const fromPredicate: {
  <A, B extends A>(refinement: Predicate.Refinement<A, B>): Filter<A, B, EqualsWith<A, B, A, Exclude<A, B>>>
  <A>(predicate: Predicate.Predicate<A>): Filter<A>
} = <A, B extends A = A>(predicate: Predicate.Predicate<A> | Predicate.Refinement<A, B>): Filter<A, B> => (input: A) =>
  predicate(input) ? Result.succeed(input as B) : Result.fail(input)
Referenced by 7 symbols