Skip to content
This repository has been archived by the owner on Sep 10, 2018. It is now read-only.
/ fump Public archive

Useful collection of functional composition helper functions

License

Notifications You must be signed in to change notification settings

tiaanduplessis/fump

Repository files navigation

𝝺 fump

Useful collection of functional composition helper functions



Built with ❤︎ by Tiaan and contributors

Table of Contents

Table of Contents
  • Install
  • Usage
  • API
  • Learning
  • Contribute
  • License
  • Install

    Greenkeeper badge

    $ 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

    Books

    Contribute

    Contributions are welcome. Please open up an issue or create PR if you would like to help out.

    License

    MIT

    About

    Useful collection of functional composition helper functions

    Topics

    Resources

    License

    Stars

    Watchers

    Forks

    Packages

    No packages published