Hyperlinkv0.8.0-beta.28

Optic

Optic.successfunctioneffect/Optic.ts:1639
<A, E>(): Prism<Result.Result<A, E>, A>

Prism that focuses on the success value of a Result.

When to use

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

Details

  • getResult fails when the result is a Failure.
  • set(a) produces Result.succeed(a).

Example (Accessing success)

import { Optic, Result } from "effect"

const _ok = Optic.id<Result.Result<number, string>>().compose(Optic.success())

console.log(Result.isSuccess(_ok.getResult(Result.succeed(42))))
// Output: true

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