The "Pipeline" Operator - Making multiple function calls look great

Isiah Meadows isiahmeadows at
Tue Nov 10 18:52:15 UTC 2015


On Tue, Nov 10, 2015 at 12:52 PM, Kevin Smith <zenparsing at> wrote:
>> - I don't like the requirement to use the keyword `this` to compose
>> functions. JS already has many features to support the keyword `this`:
>> prototypes, method invocations, function binding, arrow functions, and
>> probably others. I prefer a feature that assists the other side of the
>> spectrum.
> Yep - a well documented critique.  It depends on your point of view, I
> think.  If you view these things as "extension methods", then using `this`
> makes more sense.
>> - The fact that there are new semantics to what looks like a normal
>> function call (e.g. `->map(...)`) doesn't set well with me. You could argue
>> that it's something to get used to. Even in that case, I would expect the
>> first argument I give to `map` to stay the first argument.
> This is a reasonable objection, I think.

Not to mention it's still a point of contention:
(from here, down)

>> With the pipeline operator, partial application is left to the developer.
>> They can choose to use arrow functions, or to curry their functions. I think
>> this is the best option since it keeps things simple (no new semantics), and
>> remains readable – see the "Function with Multiple Arguments" section in the
>> GitHub link
> I agree that your proposal wins points for simplicity (both semantic and
> syntactic), but having to create an arrow function to pass more than one
> argument feels a bit awkward and seems to defeat some of the readability
> benefit.

Not to mention it would be pretty slow. That's going to be creating a
closure each call. Engines still struggle with making closures fast.
It's non-trivial at runtime to create a closure that's performant.

> _______________________________________________
> es-discuss mailing list
> es-discuss at

Isiah Meadows

More information about the es-discuss mailing list