Make note use lazy evaluation
This commit is contained in:
parent
2665f8ff98
commit
d7dab8e4b0
|
@ -530,21 +530,24 @@ def bind_opt(f: Callable[[A], Option[B]], o: Option[A]) -> Option[B]:
|
||||||
return f(val)
|
return f(val)
|
||||||
case none:
|
case none:
|
||||||
return none
|
return none
|
||||||
def note(e: B, o: Option[A]) -> 'Result[A, B]':
|
def note(e: Callable[[], B], o: Option[A]) -> 'Result[A, B]':
|
||||||
"""
|
"""
|
||||||
Convert an `Option` to a `Result` by attaching an error to the `None` variants
|
Convert an `Option` to a `Result` by attaching an error to the `None` variants
|
||||||
|
|
||||||
>>> note('woops!', Some(1))
|
`e` should be a zero-argument function which produces the desired error value. It
|
||||||
|
will be called if and only if `o` is `None`.
|
||||||
|
|
||||||
|
>>> note(lambda: 'woops!', Some(1))
|
||||||
Ok(1)
|
Ok(1)
|
||||||
|
|
||||||
>>> note('woops!', None)
|
>>> note(lambda: 'woops!', None)
|
||||||
Err('woops!')
|
Err('woops!')
|
||||||
"""
|
"""
|
||||||
match o:
|
match o:
|
||||||
case Some(val):
|
case Some(val):
|
||||||
return Ok(val)
|
return Ok(val)
|
||||||
case None:
|
case None:
|
||||||
return Err(e)
|
return Err(e())
|
||||||
|
|
||||||
def unwrap_opt(r: Option[A]) -> A:
|
def unwrap_opt(r: Option[A]) -> A:
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in a new issue