@kosich/babel-plugin-partial-expressions-experiment
v0.0.4
Published
Partial expressions experimental babel plugin
Downloads
5
Readme
Partial Expressions - Babel plugin
Try it in this babel playground.
Or install it via
npm i @kosich/babel-plugin-partial-expressions-experiment -D
And then add it to your babel.config.json
as described here.
NOTE: put it before pipeline operator plugins, if you use those.
About
Partial expressions is a syntax sugar to simplify writing expression that are awating one additional variable.
Syntax:
_
is a placeholder for the value~
is used to mark partial expression root and is required whenever we use_
(except for RHS pipes)
Examples:
let bang = ~ _ + '!';
// equals to
let bang = x => x + '!';
As a partially applied function:
let bangLog = ~ console.log(_, '!');
// equals to
let bangLog = x => console.log(x, '!');
And as a context of application:
let toBase16 = ~ _.toString(16);
// equals to
let toBase16 = x => x.toString(16);
It is also compatible with the pipeline operator:
I tried to cover a special case for pipes, when _
is in RHS of a pipe. E.g:
let value = 42 |> _ + 1 |> console.log;
// equals to
let value = 42 |> (x => x + 1) |> console.log;
Similarly, we can do partial application:
42 |> console.log(_, '!');
// equals to
42 |> (x => console.log(x, '!'));
And as a context:
42 |> _.toString(16) |> _.toUpperCase();
// equals to
42 |> (x => x.toString(16)) |> (x => x.toUpperCase());
Rules
Expression is considered partial if an unbound
_
symbol is used in it.Expression boudaries are limited by following:
2.1
~
operatorlet a = ~ _ + '!'
equalslet a = x => x + '!'
2.2 RHS in pipeline operator
42 |> _ + 1 |> console.log
equals42 |> (x => x + 1) |> console.log