3 ms·
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.
by crooked-v 7y ago
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.
- MFogleman 7y agoI mean, I think one of the big arguments against a pipeline operator is that you can easily roll your own with 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 wonderful