domingo, 5 de marzo de 2017

Pipe Operator de Elixir



Hice el curso try Elixir de codescholl y quede asombrado sobre el operador pipe o |> como les guste llamarlo.

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: