The following snippet would be slightly more along the spirit of DataPipes.jl:
@p begin
split("hello-world julia", [' ', '-'])
filter.(isletter,↑)
map(first)
map(uppercase)
join
end
I haven’t really considered broadcasting as pipeline steps yet, so unlike regular function calls they don’t enjoy automatic substitution of the previous step results.
This is the whole point of DataPipes.jl: to get rid of code overhead when using common data processing functions. Such functions typically take a function as their first argument (or arguments, if multiple), and the dataset as the last argument: think map/filter/sort/... in Base or group/join/... in SplitApplyCombine. So, map(_ + 1) translates to map(x -> x + 1, <previous step result>) and so on.
Agree that the documentation is far from perfect, I just found it easiest for me to put examples showcasing main features instead of extended description.