Add partition
This commit is contained in:
parent
206c0a0ec0
commit
92d458de85
|
@ -822,6 +822,25 @@ def sequence(s: Sequence[Result[A, B]]) -> Result[Sequence[A], B]:
|
||||||
o = next(filter(not_, s))
|
o = next(filter(not_, s))
|
||||||
assert isinstance(o, Err)
|
assert isinstance(o, Err)
|
||||||
return o #type:ignore
|
return o #type:ignore
|
||||||
|
def partition(s: Sequence[Result[A, B]]) -> tuple[Sequence[A], Sequence[B]]:
|
||||||
|
"""
|
||||||
|
Turn a list of results into a list of Ok values and a list of Err values
|
||||||
|
|
||||||
|
>>> partition([Ok(1), Ok(2), Err('Aaaaa!'), Ok(4), Err('OH GOD HELP')])
|
||||||
|
((1, 2, 4), ('Aaaaa!', 'OH GOD HELP'))
|
||||||
|
"""
|
||||||
|
return (
|
||||||
|
tuple(
|
||||||
|
succ.val
|
||||||
|
for succ in s
|
||||||
|
if isinstance(succ, Ok)
|
||||||
|
),
|
||||||
|
tuple(
|
||||||
|
e.err
|
||||||
|
for e in s
|
||||||
|
if isinstance(e, Err)
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
def trace(x: A) -> A:
|
def trace(x: A) -> A:
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in a new issue