fump v1.0.0
Install
$ npm install fump
# OR
$ yarn add fump
Usage
import {
compose,
pipe,
map,
filter,
reduce,
curry,
flatMap
} from 'fump'
// Do some magic
API
.compose(functions)
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
.pipe
The function provides the same functionality as the compose
function, but the functions are applied to the initial value from left to right.
.map
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 ]
.filter
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 ]
.reduce
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
.flatMap
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 ]
.curry
See learning section for more information about currying.
const add = (a, b) => a + b
const addOne = curry(add)(1)
addOne(5) // => 6
Learning
Articles
- Functional JavaScript: Decoupling methods from their objects
- Currying & Partial Application
- Why The Hipsters Compose Everything
- Functional JavaScript: Function Composition For Every Day Use.
Books
Contribute
Contributions are welcome. Please open up an issue or create PR if you would like to help out.
License
MIT
8 years ago