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