Warning
This page was created from a pull request (#904).
Reduced(inner_value)[source]¶Bases: object
Sentinel for early termination inside transducer.
>>> from returns.transducers import tmap, transduce, Reduced
>>> def add_one(number: int) -> int:
... return number + 1
>>> def add(acc: int, number: int) -> int:
... if acc == 3:
... return Reduced(acc)
... return acc + number
>>> my_list = [0, 1, 2]
>>> assert transduce(tmap(add_one), add, 0, my_list) == 3
inner_value (Any) –
value¶Any
Missing = <returns.transducers.transducers._Missing object>¶A singleton representing any missing value
transduce(xform, reducing_function, initial, iterable)[source]¶Process information with transducers.
>>> from returns.transducers import tmap, transduce
>>> def add_one(number: int) -> int:
... return number + 1
>>> def add(acc: int, number: int) -> int:
... return acc + number
>>> my_list = [0, 1, 2]
>>> assert transduce(tmap(add_one), add, 0, my_list) == 6
xform (Callable[[Callable[[~_AccValueType, ~_ValueType], ~_AccValueType]], Callable[[~_AccValueType, ~_ValueType], ~_AccValueType]]) –
reducing_function (Callable[[~_AccValueType, ~_ValueType], ~_AccValueType]) –
initial (~_AccValueType) –
iterable (Iterable[~_ValueType]) –
~_AccValueType
reduce(function: Callable[[_ValueType, _ValueType], _ValueType], iterable: Iterable[_ValueType], initial: returns.transducers.transducers._Missing = Missing) → _ValueType[source]¶reduce(function: Callable[[_AccValueType, _ValueType], _AccValueType], iterable: Iterable[_ValueType], initial: _AccValueType) → _AccValueTypeA rewritten version of reduce.
This version considers some features borrowed from Clojure:
Early termination
Function initializer [TODO]
You can use it as a normal reduce if you want:
>>> from returns.transducers import reduce
>>> def add(acc: int, value: int) -> int:
... return acc + value
>>> assert reduce(add, [1, 2, 3]) == 6
tmap(function)[source]¶A map implementation on a transducer form.
>>> from typing import List
>>> from returns.transducers import tmap, reduce
>>> def add_one(number: int) -> int:
... return number + 1
>>> def append(collection: List[int], item: int) -> List[int]:
... collection.append(item)
... return collection
>>> my_list = [0, 1]
>>> xformaa = tmap(add_one)(append)
>>> assert reduce(xformaa, my_list, []) == [1, 2]
function (Callable[[~_ValueType], ~_NewValueType]) –
Callable[[Callable[[~_AccValueType, ~_NewValueType], ~_AccValueType]], Callable[[~_AccValueType, ~_ValueType], ~_AccValueType]]
tfilter(predicate)[source]¶filter implementation on a transducer form.
>>> from typing import List
>>> from returns.transducers import tfilter, reduce
>>> def is_even(number: int) -> bool:
... return number % 2 == 0
>>> def append(collection: List[int], item: int) -> List[int]:
... collection.append(item)
... return collection
>>> my_list = [0, 1, 2, 3, 4, 5, 6]
>>> xform = tfilter(is_even)(append)
>>> assert reduce(xform, my_list, []) == [0, 2, 4, 6]
predicate (Callable[[~_ValueType], bool]) –
Callable[[Callable[[~_AccValueType, ~_ValueType], ~_AccValueType]], Callable[[~_AccValueType, ~_ValueType], ~_AccValueType]]