# \[ANN\] DataPipes.jl 0.3.0

**URL:** <https://discourse.julialang.org/t/ann-datapipes-jl-0-3-0/60734>\
**Category:** Package Announcements\
**Tags:** data, piping\
**Created:** [May 7, 2021, 5:29pm UTC](https://discourse.julialang.org/t/ann-datapipes-jl-0-3-0/60734 "2021-05-07T17:29:26Z")\
**Posts on this page:** 1\
**Showing post:** 49

<div class="post-metadata">

**Author:** ![c42f](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/c42f/32/52842_2.png) [@c42f](https://discourse.julialang.org/u/c42f)\
**Post date:** [July 9, 2021, 4:08am UTC](https://discourse.julialang.org/t/ann-datapipes-jl-0-3-0/60734/49 "2021-07-09T04:08:17Z")

</div>

> [@aplavin](#):
>
> having a pure syntax indication such as `__` in the first pipe step helps distinguish between a function definition and application.

Yes it kind of neatly falls into place in this case.

Another approach to “the problem of `__`” is to define versions of common functions which return a function:

```julia-auto
Base.map(f::Function) = xs->map(f, xs)
Base.filter(f::Function) = xs->filter(f, xs)

```

Then we’d have

```julia-auto
julia> data = 5:12
5:12

julia> @_ data |>
           filter(_>10) |>
           map(_^2)
2-element Vector{Int64}:
 121
 144

```

This is type piracy, of course! But this version of `Base.filter` isn’t defined, and though `Base.map(f::Function)` is defined the existing definition of mapping over zero collections seems pretty useless.

---

_[View the full topic](https://discourse.julialang.org/t/ann-datapipes-jl-0-3-0/60734)._
