I really wish we could just get a pipeline operator past stage 1. It seems like such a simple idea philosophically but apparently the big players can't agree on any of the exact details.
Personally, I'd rather see it go through with no placeholder at all so it can just happen without people arguing over it forever, and then have a placeholder added in a future proposal.
Maybe it's just me, but I don't see the purpose of a pipeline operator - at least in JS.
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.
A simple example would be mixing map/reduce stuff on arrays with other non-built-in utility functions that take arrays without having to break the logical flow.
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.
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 wonderful
> Fortunately, a much better syntax for this type of expressions is being introduced by ECMAScript, known as the pipeline operator.
This 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."
For anyone looking at picking up Ramda, the docs at ramdajs.com are great API docs, but don't tell you a thing about how to actually use lenses, transducers, and point free data last functions with pipes. Randy Coulman has a great list of guides on how to actually use Ramda on his blog[1]. Start at the bottom with the introduction and work your way up.
15 comments
[ 0.28 ms ] story [ 149 ms ] threadFrom 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:
Compare to: ...and then add three or four other non-builtin methods in between map steps and consider the resulting readability.This 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."
https://randycoulman.com/blog/categories/thinking-in-ramda/