Breaking Chains with Pipelines in Modern JavaScript
wix.engineering
wix.engineering
From a cognitive perspective, it doesn't make code more readable or easier to understand.
From a practical perspective, why? What can't we do with it that isn't aesthetic?
Edit: Okay, after reading through the article again, I get it. I've had issues with eager loading in Node AND I will say the pipeline is easier to understand than simply using generators. Good article.
For a very simple example, manipulating and summing an array of values:
import { range, sum } from 'ramda';
range(0, 6)
|> x => x.map(i => i * i)
|> sum
Compare to: import { range, sum } from 'ramda';
sum(
range(0, 6)
.map(i => i * i)
)
...and then add three or four other non-builtin methods in between map steps and consider the resulting readability. const pipe = (...fxs) => x => fxs.reduce((v, f) => f(v), x);
If you're going to pull in ramda for example, they have their own pipe, and a map function that takes (predicate, array) as curried arguments, to aid with composition
import { map, pipe, range, sum } from 'ramda'; pipe(
range,
map(i => i * i),
sum
)(0, 6)
I haven't messed with HN formatting before, so I hope that turns out right. My team uses Ramda and pipes regularly in our Node code, and its absolutely wonderfulThis is "Stage 1: Strawman Proposal." It's not exactly accurate to say the operator is being introduced "by ECMAScript", more like "it's being proposed for addition to the ECMAScript specification."