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