[ANN] Pipebraces.jl – piping with braces

The idea of piping with curly braces was proposed two months ago. Here is another implementation in favor of |> {} instead.

Take an example in the proposal post for quick comparison.

Using Pipebraces.jl it would be

julia> "a=1 b=2 c=3" |> {
       @. split(_, "=");
       map(Symbol(_[1]) => parse(Int, _[2]), __);
(a = 1, b = 2, c = 3)

Pipebraces.jl is a small extension to the surface syntax of Julia Base and I would like it to be a simple/straightforward piping tool for prototyping. (It’s not necessary to use the syntax for production code.) For more detailed usage please read README.

From the previous discussion in the proposal post I know the new syntax of |> {} doesn’t meet everyone’s need. But all improvement suggestions are very welcome.

If you prefer to use |>, with my implementation you can already write:

julia> "a=1 b=2 c=3" |> {
           @. split(it, "=")
           map({Symbol(it[1]) => parse(Int, it[2])}, it)
(a = 1, b = 2, c = 3)

(although, as previously explained, there are reasons to prefer obj.{...} over obj |> {...})

What do you believe to be the advantages of this approach over my proposal?

They now look like twins in this example. But if you take a look at the source codes they are two different implementations (I didn’t check your up-to-date version though).

Pipebraces.jl intends to stay with Base as close as possible. I mean without |> call, curly braces in Pipebraces.jl behavior the same as in Base.

julia> 1 |> {sin(_^2)}
julia> {sin(_^2)}
ERROR: syntax: { } vector syntax is discontinued around REPL[9]:1
 [1] top-level scope