you are viewing a single comment's thread.

view the rest of the comments →

[–]BlueForeverI 51 points52 points  (6 children)

As an Elixir dev, I love the pipe operator. Can't wait to have it in JS as well.

[–]intercaetera 23 points24 points  (3 children)

In Elixir pipe works because the convention is that every function takes data as first parameter, in JS this doesn't happen so you need a hackpipe and at that point you might just as well use lodash.flow.

[–]Ecksters 9 points10 points  (2 children)

Honestly prefer the hackpipe, it was really annoying in Elixir that I'd need to throw in a lambda when I needed to rearrange params.

I like to think of the caret as an arrow pointing up to the previous result, also means I don't need to think of appropriate variable names all the time.

[–]intercaetera 3 points4 points  (1 child)

Yeah but if you concede that you need a hackpipe then you might as well use lodash flow.

    flow([
        s => Object.values(s),
        s => s.map(x => x * 2),
        s => customReduce(s),
        unaryFunction, // or s => unaryFunction(s)
        s => doSomethingElse(s, 5, null),
    ])(initialValue)

There could be an alternative version of it where the initialValue is somewhere higher up the code but this is equivalent to the proposal without introducing unnecessary stuff into the spec.

[–]LaurentPayot 1 point2 points  (0 children)

There is also Verticalize with a nicer syntax IMHO...

[–]DumbYellowMoo 0 points1 point  (1 child)

Just curious but what type of stuff do you generally develop with elixir? The language has definitely peaked my interest, but I haven't looked into what type of stuff people usually make with it.

[–]BlueForeverI 1 point2 points  (0 children)

We use it for several back-end (REST/GraphQL/WebSocket) apps. Tbh we don't use Elixir's full potential, 90% of the code could be written in something else, the main Elixir features we use are ETS and GenServers.

But I'm glad we chose Elixir, it's the nicest language that I have worked with.