[![Travis](https://img.shields.io/travis/stoeffel/compose-function.svg?style=flat-square)](https://travis-ci.org/stoeffel/compose-function) [![npm](https://img.shields.io/npm/v/compose-function.svg?style=flat-square)](https://www.npmjs.com/package/compose-function) [![Dependency Status](https://david-dm.org/stoeffel/compose-function.svg?style=flat-square)](https://david-dm.org/stoeffel/compose-function) [![Coveralls](https://img.shields.io/coveralls/stoeffel/compose-function.svg?style=flat-square)](https://coveralls.io/github/stoeffel/compose-function)
Installation |
Usage |
Related |
License
logo by Justin Mezzell
Compose a new function from smaller functions `f(g(x))`Installation ------------ `npm install compose-function` Usage ----- ## Basic usage ```js import compose from 'compose-function'; const composition = compose(sqr, add2); // sqr(add2(x)) composition(2) // => 16 compose(sqr, inc)(2); // => 9 compose(inc, sqr)(2); // => 5 ``` ## with curry ```js import compose from 'compose-function'; import { curry, _ } from 'curry-this'; const add = (x, y) => x + y; // add(6, sqr(add(2, x))) compose( add::curry(6), sqr, add::curry(2), ); // map(filter(list, even), sqr) compose( map::curry(_, sqr), filter::curry(_, even), )([1,2,3,4,5,6,7,8]) // => [4, 16, 36, 64] ``` ### `::` huh? If you’re wondering what the `::` thing means, you’d better read this excellent [overview](https://github.com/jussi-kalliokoski/trine/blob/5b735cbfb6b28ae94bac0446d9ecd5ce51fb149b/README.md#why) by [@jussi-kalliokoski](https://github.com/jussi-kalliokoski) or have a look at the [function bind syntax proposal](https://github.com/zenparsing/es-function-bind). Or checkout the [curry-this docs][ct]. Related ---- * [curry-this][ct] License ---- MIT © [Christoph Hermann](http://stoeffel.github.io) [r]: http://ramdajs.com [ct]: https://github.com/stoeffel/curry-this