Saltar al contenido

Operador Pipe

En esta página

El operador |> inyecta el valor de la izquierda como primer argumento de la llamada de la derecha. Esto cambia la lectura de adentro hacia afuera (f(g(h(x)))) al orden natural de ejecución (x |> h() |> g() |> f()), haciendo el código autodescriptivo.

La forma más simple encadena funciones de un solo argumento:

Pipelines simples y multilínea; |> con argumentos extra — el valor de la izquierda siempre ocupa el primer slot.

01-pipe-basics.zolo
Playground
// Feature: Pipe operator `|>` — fundamentals

// Syntax: `value |> f()` injects `value` as the 1st argument of `f`.

// When to use: read transformations in natural order (data-first), instead

// of nesting calls. Replaces `f(g(h(x)))` with `x |> h() |> g() |> f()`.


fn double(x: int) -> int {
  return x * 2
}

fn add_one(x: int) -> int {
  return x + 1
}

fn square(x: int) -> int {
  return x * x
}

// Simple pipeline: 3 -> 6 -> 7 -> 49.

let r = 3 |> double() |> add_one() |> square()
print(r)

// expected: 49


// Same computation without pipe — reads inside-out.

let r2 = square(add_one(double(3)))
print(r2)

// expected: 49


// Pipe with extra arguments: the LHS goes as the FIRST arg.

fn add(a: int, b: int) -> int {
  return a + b
}

fn mul(a: int, b: int) -> int {
  return a * b
}

// 5 |> add(10) calls add(5, 10) = 15; then mul(15, 3) = 45.

let calc = 5 |> add(10) |> mul(3)
print(calc)

// expected: 45


// Multi-line pipeline — each step stands out.

let chain = 1
  |> add(2)
  |> mul(10)
  |> add(5)
print(chain)
// expected: 35

Desafío

Agrega una función negate(x: int) -> int que retorne -x e insértala como el cuarto paso del pipeline chain. ¿Cuál es el resultado esperado?

Consulta también

Buscar en Zolo

9 resultados

enespt-br