(examples are from proposal)
function add(x, y) { return x + y; }
const addOne = add(1, ?); // apply from the left
addOne(2); // 3
const addTen = add(?, 10); // apply from the right
addTen(2); // 12
let newScore = player.score
|> add(7, ?)
|> clamp(0, 100, ?); // shallow stack, the pipe to `clamp` is the same frame as the pipe to `add`.
f(x, ?) // partial application from left f(?, x) // partial application from right f(?, x, ?) // partial application for any arg o.f(x, ?) // partial application from left o.f(?, x) // partial application from right o.f(?, x, ?) // partial application for any arg super.f(?) // partial application allowed for call on |SuperProperty|
f(x + ?) // `?` not in top-level Arguments of call x + ? // `?` not in top-level Arguments of call ?.f() // `?` not in top-level Arguments of call new f(?) // `?` not supported in `new` super(?) // `?` not supported in |SuperCall|
npm install --save-dev @babel/plugin-proposal-partial-application
yarn add --dev @babel/plugin-proposal-partial-application
pnpm add --save-dev @babel/plugin-proposal-partial-application
{
"plugins": ["@babel/plugin-proposal-partial-application"]
}
babel --plugins @babel/plugin-proposal-partial-application script.js
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-proposal-partial-application"],
});
© 2014-present Sebastian McKenzie
Licensed under the MIT License.
https://babeljs.io/docs/babel-plugin-proposal-partial-application/