Skip to content

Currying

The rite.functional.currying submodule offers helpers for currying and uncurrying callables and performing partial application.

Currying Module

Function currying and uncurrying utilities.

This submodule provides utilities for transforming functions between curried and uncurried forms.

Examples

from rite.functional.currying import ( ... currying_curry, ... currying_uncurry ... ) def add(a, b, c): ... return a + b + c curried = currying_curry(add) curried(1)(2)(3) 6

Modules

currying_curry

Function Currying

Transform multi-argument function into chain of single-argument functions.

Examples

from rite.functional.currying import currying_curry def add(a, b, c): ... return a + b + c curried = currying_curry(add) curried(1)(2)(3) 6

Functions

currying_curry(func: Callable[..., T]) -> Callable[..., T | Callable[..., Any]]

Curry a function.

Transforms f(a, b, c) into f(a)(b)©.

Parameters:

Name Type Description Default
func Callable[..., T]

Function to curry.

required

Returns:

Type Description
Callable[..., T | Callable[..., Any]]

Curried function.

Examples:

>>> def multiply(x, y, z):
...     return x * y * z
>>> curried = currying_curry(multiply)
>>> curried(2)(3)(4)
24
>>> partial = curried(2)(3)
>>> partial(4)
24
Notes

Automatically detects function arity from signature.

currying_uncurry

Function Uncurrying

Transform curried function back to multi-argument form.

Examples

from rite.functional.currying import currying_uncurry curried = lambda a: lambda b: lambda c: a + b + c uncurried = currying_uncurry(curried, 3) uncurried(1, 2, 3) 6

Functions

currying_uncurry(func: Callable[..., Any], arity: int) -> Callable[..., Any]

Uncurry a curried function.

Transforms f(a)(b)© back to f(a, b, c).

Parameters:

Name Type Description Default
func Callable[..., Any]

Curried function.

required
arity int

Number of arguments.

required

Returns:

Type Description
Callable[..., Any]

Uncurried function.

Examples:

>>> curried = lambda x: lambda y: x + y
>>> uncurried = currying_uncurry(curried, 2)
>>> uncurried(5, 3)
8
Notes

Arity must be specified as it cannot be inferred.

options: show_root_heading: true show_source: false heading_level: 2