Curry

Curry#

curry(num_args: Literal[0]) Callable[[Callable[[_P], _B]], Callable[[_P], _B]]#
curry(num_args: Literal[1]) Callable[[Callable[[Concatenate[_A, _P]], _B]], Callable[[_A], Callable[[_P], _B]]]
curry(num_args: Literal[2]) Callable[[Callable[[Concatenate[_A, _B, _P]], _C]], Callable[[_A], Callable[[_B], Callable[[_P], _C]]]]
curry(num_args: Literal[3]) Callable[[Callable[[Concatenate[_A, _B, _C, _P]], _D]], Callable[[_A], Callable[[_B], Callable[[_C], Callable[[_P], _D]]]]]
curry(num_args: Literal[4]) Callable[[Callable[[Concatenate[_A, _B, _C, _D, _P]], _E]], Callable[[_A], Callable[[_B], Callable[[_C], Callable[[_D], Callable[[_P], _E]]]]]]

A curry decorator.

Makes a function curried.

Parameters:
  • num_args – The number of args to curry from the start of the

  • function

Example

>>> @curry(1)
... def add(a: int, b: int) -> int:
...    return a + b
>>>
>>> assert add(3)(4) == 7
curry_flip(num_args: Literal[0]) Callable[[Callable[[_P], _A]], Callable[[_P], _A]]#
curry_flip(num_args: Literal[1]) Callable[[Callable[[Concatenate[_A, _P]], _B]], Callable[[_P], Callable[[_A], _B]]]
curry_flip(num_args: Literal[2]) Callable[[Callable[[Concatenate[_A, _B, _P]], _C]], Callable[[_P], Callable[[_A], Callable[[_B], _C]]]]
curry_flip(num_args: Literal[3]) Callable[[Callable[[Concatenate[_A, _B, _C, _P]], _D]], Callable[[_P], Callable[[_A], Callable[[_B], Callable[[_C], _D]]]]]
curry_flip(num_args: Literal[4]) Callable[[Callable[[Concatenate[_A, _B, _C, _D, _P]], _E]], Callable[[_P], Callable[[_A], Callable[[_B], Callable[[_C], Callable[[_D], _E]]]]]]

A flipped curry decorator.

Makes a function curried, but flips the curried arguments to become the last arguments. This is very nice when having e.g optional arguments after a source argument that will be piped.

Parameters:
  • num_args – The number of args to curry from the start of the

  • function

Example

>>> @curry_flip(1)
... def map(source: List[int], mapper: Callable[[int], int]):
...    return [mapper(x) for x in source]
>>>
>>> ys = pipe(xs, map(lambda x: x * 10))