Trait Respub

Source
:trait(pub) Res
  .is-ok ( (Result val err) → Bool )
  .is-err ( (Result val err) → Bool )
  .map ( [a → b ] (Result a err) → (Result b err) )
  .map-err ( [e1 → e2 ] (Result val e1) → (Result val e2) )
  .and-then ( [a → (Result b err) ] (Result a err) → (Result b err) )
  .or-else ( [e1 → (Result val e2) ] (Result val e1) → (Result val e2) )
  .unwrap ( (Result val err) → val )
  .unwrap-err ( (Result val err) → err )
  .expect ( (Result a e) Str → a )
  .expect-err ( (Result a e) Str → e )
  .unwrap-or ( val (Result val err) → val )
  .unwrap-or-else ( [err → val ] (Result val err) → val )
  .into-ok ( (Result a Never) → a )
  .into-err ( (Result Never e) → e )
  .ok ( (Result val err) → (Option val) )
  .err ( (Result val err) → (Option err) )
  .flatten ( (Result (Result val err) err) → (Result val err) )
  .map-or ( (Result a e) b [a → b ] → b )
  .map-or-else ( (Result a e) [e → b ] [a → b ] → b )
  .and ( (Result a e) (Result b e) → (Result b e) )
  .or ( (Result a e) (Result a f) → (Result a f) )
  .is-ok-and ( (Result a e) [a → Bool ] → Bool )
  .is-err-and ( (Result a e) [e → Bool ] → Bool )
  .transpose ( (Result (Option a) e) → (Option (Result a e)) )
  .inspect ( (Result a e) [a → ] → (Result a e) )
  .inspect-err ( (Result a e) [e → ] → (Result a e) )
  .contains ( (Result a e) a → Bool )
  .contains-err ( (Result a e) e → Bool )
Description

Combinator surface on (Result val err). .map / .map-err transform one side while preserving the other; .and-then / .or-else chain into further fallible computations. .ok / .err project either side to an Option.

Required Methods

.is-ok ( (Result val err) → Bool )

True iff the Result is Ok.

.is-err ( (Result val err) → Bool )

True iff the Result is Err.

.map ( [a → b ] (Result a err) → (Result b err) )

Apply a function to the Ok value; the Err branch is unchanged.

.map-err ( [e1 → e2 ] (Result val e1) → (Result val e2) )

Apply a function to the Err value; the Ok branch is unchanged.

.and-then ( [a → (Result b err) ] (Result a err) → (Result b err) )

Chain into another Result-producing computation on the Ok side (monadic bind).

.or-else ( [e1 → (Result val e2) ] (Result val e1) → (Result val e2) )

Attempt to recover from Err by invoking a fallback; Ok passes through.

.unwrap ( (Result val err) → val )

Return the Ok value, panicking if Err.

.unwrap-err ( (Result val err) → err )

Return the Err value, panicking if Ok.

.expect ( (Result a e) Str → a )

Return the Ok value, panicking with the supplied message if Err.

.expect-err ( (Result a e) Str → e )

Return the Err value, panicking with the supplied message if Ok.

.unwrap-or ( val (Result val err) → val )

Return the Ok value, or a fixed fallback if Err.

.unwrap-or-else ( [err → val ] (Result val err) → val )

Return the Ok value, or invoke a function on the error to produce one if Err.

.into-ok ( (Result a Never) → a )

Extract the Ok value from a (Result a Never) — the Err arm is uninhabited.

.into-err ( (Result Never e) → e )

Extract the Err value from a (Result Never e) — the Ok arm is uninhabited.

.ok ( (Result val err) → (Option val) )

Project to Some val when Ok, None when Err.

.err ( (Result val err) → (Option err) )

Project to Some err when Err, None when Ok.

.flatten ( (Result (Result val err) err) → (Result val err) )

Collapse (Result (Result val err) err) into (Result val err) by one layer.

.map-or ( (Result a e) b [a → b ] → b )

.map-or-else ( (Result a e) [e → b ] [a → b ] → b )

.and ( (Result a e) (Result b e) → (Result b e) )

.or ( (Result a e) (Result a f) → (Result a f) )

.is-ok-and ( (Result a e) [a → Bool ] → Bool )

.is-err-and ( (Result a e) [e → Bool ] → Bool )

.transpose ( (Result (Option a) e) → (Option (Result a e)) )

.inspect ( (Result a e) [a → ] → (Result a e) )

Call a quotation on the Ok value for side effects, returning the Result unchanged.

.inspect-err ( (Result a e) [e → ] → (Result a e) )

Call a quotation on the Err value for side effects, returning the Result unchanged.

.contains ( (Result a e) a → Bool )

True iff the Result is Ok and the inner value equals the supplied argument.

.contains-err ( (Result a e) e → Bool )

True iff the Result is Err and the error value equals the supplied argument.

Implementors

impl Res for Result