$ npm install fump
# OR
$ yarn add fump
import {
compose,
pipe,
map,
filter,
reduce,
curry,
flatMap
} from 'fump'
// Do some magic
The function accepts one or more functions that are applied from right to left on a initial value. It Returns a function that accepts the initial value.
const addFive = (a) => a + 5
const timesTwo = (a) => a * 2
const timesAndAdd = compose(addFive, timesTwo) // => Function
timesAndAdd(10) // => 25
The function provides the same functionality as the compose
function, but the functions are applied to the initial value from left to right.
Function provides similar functionality to the Array.prototype.map()
. It accepts a function as its argument and returns a function that accepts a object or array to map over.
const timesTwo = x => x * 2
const arr = [1, 2, 3, 4]
map(timesTwo)(arr) // => [2, 4, 6, 8]
const addOne = x => x + 1
const obj = {
0: 1,
1: 2,
2: 3,
length: 3
}
map(addOne)(obj) // => [ 2, 3, 4 ]
Function provides similar functionality to the Array.prototype.filter()
. It accepts a predicate function as its argument and returns a function that accepts a object or array to filter.
const moreThanTwo = x => x > 2
const arr = [1, 2, 3, 4]
filter(moreThanTwo)(arr) // => [ 3, 4 ]
const isEven = x => x % 2 === 0
const obj = {
0: 1,
1: 2,
2: 3,
3: 4,
length: 4
}
filter(isEven)(obj) // => [ 2, 4 ]
Function provides similar functionality to the Array.prototype.reduce()
. It accepts a function as its argument and returns a function that accepts a object or array to reduce.
const add = (a, b) => a + b
const sum = reduce(add)
sum([1, 2, 3]) // => 6
Function provides similar functionality to map
, but flattens any of the callbacks returns.
const fill = flatMap(x => new Array(x).fill(x))
fill([1, 2, 3]) // => [ 1, 2, 2, 3, 3, 3 ]
See learning section for more information about currying.
const add = (a, b) => a + b
const addOne = curry(add)(1)
addOne(5) // => 6
- Functional JavaScript: Decoupling methods from their objects
- Currying & Partial Application
- Why The Hipsters Compose Everything
- Functional JavaScript: Function Composition For Every Day Use.
Contributions are welcome. Please open up an issue or create PR if you would like to help out.
MIT