https://github.com/oelin/hyper-reducer
A generalization of reduce() to arbitrary arity.
https://github.com/oelin/hyper-reducer
functional-programming reduce reduction
Last synced: 7 months ago
JSON representation
A generalization of reduce() to arbitrary arity.
- Host: GitHub
- URL: https://github.com/oelin/hyper-reducer
- Owner: oelin
- License: mit
- Created: 2023-02-03T13:29:46.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-02-03T13:39:28.000Z (over 2 years ago)
- Last Synced: 2025-02-14T19:23:26.811Z (8 months ago)
- Topics: functional-programming, reduce, reduction
- Language: JavaScript
- Homepage: https://npmjs.com/hyper-reducer
- Size: 7.81 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# hyper-reducer
A generalization of `reduce()` to arbitrary arity.
## Introduction
Reduction is a key concept in functional programming which encapsulates the idea of recursively transforming state based on a sequence of input. More concretely, `reduce()` takes two values (one of which is the previous output), and returns another value. In contrast, `reduceN()` takes `N + 1` values (it has arbitrary arity). Although `reduceN()` can ultimately be *reduced to* regular `reduce()`, the construction makes certain operations easier to understand and implement.
## Insallation
```sh
npm i hyper-reducer
```## Usage
```js
import hyperReducer from 'hyper-reducer'const reduce2 = hyperReducer(2) // Reduction with arity 2.
const array = [1, 2, 3, 4, 5, 6]
reduce2(array, (a, b0, b1) => a*b0 + b1, initial=[1, 1]) // Returns 10
```The `hyperReducer()` function takes an arity argument and returns a concrete reducer with that arity. The reducer then takes an array, callback function and (optional) initial set of previous outputs. The initial outputs are set to zero by default.