# Fixing the Piping/Chaining Issue

**URL:** <https://discourse.julialang.org/t/fixing-the-piping-chaining-issue/89654>\
**Category:** Internals & Design\
**Tags:** proposal, piping, chaining, partial-evaluation, threading\
**Created:** [November 2, 2022, 11:04am UTC](https://discourse.julialang.org/t/fixing-the-piping-chaining-issue/89654 "2022-11-02T11:04:36Z")\
**Posts on this page:** 1\
**Showing post:** 66

<div class="post-metadata">

**Author:** ![dlakelan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dlakelan/32/8491_2.png) [@dlakelan](https://discourse.julialang.org/u/dlakelan)\
**Post date:** [November 5, 2022, 5:11am UTC](https://discourse.julialang.org/t/fixing-the-piping-chaining-issue/89654/66 "2022-11-05T05:11:50Z")

</div>

> [@uniment](#):
>
> Thinking about it now, I think I like this perspective.

The thing is, this is a very different perspective on the language… it’s more of a

[https://discourse.julialang.org/t/psa-julia-is-not-at-that-stage-of-development-anymore/44872](https://discourse.julialang.org/t/psa-julia-is-not-at-that-stage-of-development-anymore/44872)

Almost applies here. This fundamentally changes major components of the parsing and semantics of the language. I’m not sure how fundamental it is, but @StefanKarpinski might have something to say about this. Right now we have an Expr object that is a call which represents the function name and the arguments. You are asking to parse that thing as a function object and a tuple and then interpret the adjacency of a function and a tuple as “application” but “only if it’s not bound tighter by \\> or /\>”

```julia
julia> foo = Meta.parse("f(x)")
:(f(x))

julia> typeof(foo)
Expr

julia> foo.head
:call

julia> foo.args
2-element Vector{Any}:
 :f
 :x

```

you are asking to fundamentally change the way things parse, so that “f(x,y,z)” will not be parsed as:

```julia
julia> Expr(:call,:foo,:x,:y,:z)
:(foo(x, y, z))

```

but rather something like:

```julia
Expr(:adjacency,Expr(:symbol :foo),Expr(:tuple, (:x,:y,:z)))

```

And then the fact that the two are adjacent implies a call to the function identified by the symbol under some circumstances and not in others…

I mean, this would be a HUGELY breaking change for many many macros for example. It’s a nonstarter for Julia 1 I’m pretty sure.

---

_[View the full topic](https://discourse.julialang.org/t/fixing-the-piping-chaining-issue/89654)._
