Hyperlinkv0.8.0-beta.28

Optic

Optic.failurefunctioneffect/Optic.ts:1684
<A, E>(): Prism<Result.Result<A, E>, E>

Prism that focuses on the failure value of a Result.

When to use

Use when you have a Result<A, E> and want to read/update E only when it is a Failure.

Details

  • getResult fails when the result is a Success.
  • set(e) produces Result.fail(e).

Example (Accessing failure)

import { Optic, Result } from "effect"

const _err = Optic.id<Result.Result<number, string>>().compose(Optic.failure())

console.log(Result.isSuccess(_err.getResult(Result.fail("oops"))))
// Output: true

console.log(Result.isFailure(_err.getResult(Result.succeed(42))))
// Output: true
Source effect/Optic.ts:168411 lines
export function failure<A, E>(): Prism<Result.Result<A, E>, E> {
  const run = runRefinement(Result.isFailure, { expected: "a Result.Failure value" })
  return makePrism(
    (s) =>
      Result.mapBoth(run(s), {
        onFailure: String,
        onSuccess: (s) => s.failure
      }),
    Result.fail
  )
}