babel-plugin-function-composition

August 10, 2018 ยท View on GitHub

This plugin is made to work with point-free (tacit) functional programming by composing functions over piping. It is inspired by the work of babel-plugin-pipe-operator-curry, but with a very different purpose, with focus on omitting arguments. I've overloaded the operator & for that. You can built more complex functions from simple ones.

Examples

import { add, multiply } from 'ramda';

const add5AndMul5 = add(5) & multiply(5);

Turn into

import { add, multiply } from 'ramda';

const add5AndMul5 = (...args) => multiply(5)(add(5)(...args));

Disabling in current scope

If you want to use the original bitwise and operator, you can disable this plugin in current scope (and it children scopes) using 'no composition' directive.

Installation

$ npm install --save-dev babel-plugin-function-composition

Usage

.babelrc

{
  "plugins": ["function-composition"]
}

Via CLI

$ babel --plugins function-composition script.js

Via Node API

require('babel-core').transform('code', {
  plugins: ['function-composition']
});

License

MIT