Giter VIP home page Giter VIP logo

Comments (11)

no-gravity avatar no-gravity commented on June 12, 2024 2

It is simpler because it avoids nesting and needs less meta characters.

As the proposal notes, nesting makes reading harder.

from proposal-pipeline-operator.

OleksiiKachan avatar OleksiiKachan commented on June 12, 2024 1

in my opinion |> is better than ~> because
1 - | is literally called pipe. hence "pipeline operator"
2 - visually when scanning code ~ and > blend together you may confuse it with bitwise NOT
there are many other reasons why other variants were rejected, you can refer readme or closed issues
I agree that proposed syntax is not the simplest but after all this is something completely new in this language. we all gonna feel awkward using it until we are used to. maybe later all we all will figure out something better (like we did for async/await syntax for promises)

from proposal-pipeline-operator.

ljharb avatar ljharb commented on June 12, 2024 1

That’s not nested, though - it’s linear.

from proposal-pipeline-operator.

ljharb avatar ljharb commented on June 12, 2024

Why is that simpler? That also seems more akin to F# syntax, which was rejected in favor of Hack (specifically, assuming that a value is a function)

from proposal-pipeline-operator.

mAAdhaTTah avatar mAAdhaTTah commented on June 12, 2024

Besides the fact that the location of the 7 argument seems "misplaced" visually (the arguments occur before the function call), it's also not clear how you would translate this:

a = b|>c(%,7)|>d(%, 8)

Or this

a = b|>c(%,7)|>d(8, %)

to your version.

from proposal-pipeline-operator.

tabatkins avatar tabatkins commented on June 12, 2024

Yup, the core idea here is just F#-style again. See #221 for why that was rejected by the committee and is not being pursued.

It is simpler because it avoids nesting

The only nesting in your examples is in the original non-pipelined code, where calls are nested inside each other. The pipeline'd version just has functions being called - that's not nesting.

from proposal-pipeline-operator.

no-gravity avatar no-gravity commented on June 12, 2024

Besides the fact that the location of the 7 argument seems "misplaced" visually (the arguments occur before the function call),

That is the point of pipes, isn't it?

it's also not clear how you would translate this:

a = b|>c(%,7)|>d(%, 8)

It would become: a = b,7 ~> c,8 ~> d

Or this

a = b|>c(%,7)|>d(8, %)

That is: a = b,7 ~> 8,c ~> d

from proposal-pipeline-operator.

mAAdhaTTah avatar mAAdhaTTah commented on June 12, 2024

That is the point of pipes, isn't it?

No, the point is to linearize nested code.

from proposal-pipeline-operator.

no-gravity avatar no-gravity commented on June 12, 2024

That is the point of pipes, isn't it?

No, the point is to linearize nested code.

That is what I mean.

Nested:

a = b|>c(%,7)|>d(%)

Linearized:

a = b,7~>c~>d

from proposal-pipeline-operator.

no-gravity avatar no-gravity commented on June 12, 2024

How so? Because % and 7 are not function calls? We can "fix" that by replacing 7 with e().

Current proposal:

a = b|>c(%,e())|>d(%)

My proposal:

a = b,e()~>c~>d

The issue with the current proposal is that it tries to avoid nesting, support multiple input parameters and use pipes that only carry a single value. And therefore must fail in at least one aspect. It fails in regards to nesting.

from proposal-pipeline-operator.

ljharb avatar ljharb commented on June 12, 2024

Because any sensible codebase would pad |> with newlines or spaces, and because you only have one pipeline, in both examples.

from proposal-pipeline-operator.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.