Translate

martes, 14 de enero de 2025

El Poder del Operador |> en Elixir: Elegancia y Legibilidad


La programación funcional se centra en la composición de funciones para resolver problemas de manera clara y concisa. Uno de los operadores más representativos de este paradigma es el operador pipe |>, que permite encadenar llamadas a funciones de forma fluida y natural.

El operador |> (pipe) se utiliza para pasar el resultado de una expresión como el primer argumento de la siguiente función en la cadena.


value |> function1() |> function2()


Esto es equivalente a:


function2(function1(value))


Como ventajas podemos nombrar: 

  1. Legibilidad Mejorada: El flujo de datos se representa de forma secuencial, como si leyeras un proceso paso a paso.
  2. Eliminación de Paréntesis Anidados: Reduce la complejidad visual de funciones anidadas.
  3. Facilita el Refactoring: Reordenar o agregar pasos en el flujo es más sencillo.


Esto :

String.upcase(String.trim(" hola "))


Se puede escribir así:

" hola "

|> String.trim()

|> String.upcase()


Ambos códigos producen el mismo resultado: `"HOLA"`, pero la versión con |> es más legible.

El operador |> no se limita a funciones de la librería estándar; también puedes usarlo con tus propias funciones.


defmodule Math do

  def square(x), do: x * x

  def double(x), do: x * 2

end


5

|> Math.square()

|> Math.double()

Resultado: 50


Veamos ejemplos de uso : 


[1, 2, 3, 4]

|> Enum.map(&(&1 * 2))

|> Enum.filter(&(&1 > 4))

Resultado: [6, 8]


Otro ejemplo con estructuras más complejas: 


%{name: "John", age: 30}

|> Map.put(:country, "USA")

|> Map.update!(:age, &(&1 + 1))

Resultado: %{name: "John", age: 31, country: "USA"}


El operador `|>` es una herramienta fundamental en Elixir que no solo mejora la legibilidad del código, sino que también alienta un diseño funcional y modular. Al adoptarlo, puedes construir pipelines claros y efectivos que hagan que tu código sea más expresivo y fácil de mantener.