Vamos por parte, si no conocen Elixir te recomiendo:
y si queres saber más sobre Elixir: http://emanuelpeg.blogspot.com.ar/search/label/Elixir
En programación funcional y en otros paradigmas también, es común que una función reciba como parámetros el resultado de otra función y así sucesivamente. Lo que nos queda:
foo(bar(baz(new_function(other_function(2)))))
Como pueden ver no es muy legible para estos casos tenemos el operador |> que funciona igual al operador pipe de linux, es decir permite que el resultado de una función sea el primer parámetro de una segunda función.
Por lo tanto nuestro ejemplo nos queda:
other_function(2) |> new_function() |> baz() |> bar() |> foo()
Veamos unos ejemplos:
iex> "Elixir rocks" |> String.split
["Elixir", "rocks"]
iex> "Elixir rocks" |> String.upcase |> String.split
["ELIXIR", "ROCKS"]
iex> "elixir" |> String.ends_with?("ixir")
true
Dejo link: