Elixir - Corrientes

Muchas funciones esperan un enumerable y devuelven un listespalda. Significa que, al realizar múltiples operaciones con Enum, cada operación generará una lista intermedia hasta que alcancemos el resultado.

Los flujos admiten operaciones perezosas en lugar de operaciones ansiosas por enumeraciones. En breve,streams are lazy, composable enumerables. Esto significa que los Streams no realizan una operación a menos que sea absolutamente necesario. Consideremos un ejemplo para entender esto:

odd? = &(rem(&1, 2) != 0)
res = 1..100_000 |> Stream.map(&(&1 * 3)) |> Stream.filter(odd?) |> Enum.sum
IO.puts(res)

Cuando se ejecuta el programa anterior, produce el siguiente resultado:

7500000000

En el ejemplo dado arriba, 1..100_000 |> Stream.map(&(&1 * 3))devuelve un tipo de datos, un flujo real, que representa el cálculo del mapa en el rango 1..100_000. Aún no ha evaluado esta representación. En lugar de generar listas intermedias, los flujos crean una serie de cálculos que se invocan solo cuando pasamos el flujo subyacente al módulo Enum. Los flujos son útiles cuando se trabaja con colecciones grandes, posiblemente infinitas.

Las transmisiones y las enumeraciones tienen muchas funciones en común. Los flujos proporcionan principalmente las mismas funciones proporcionadas por el módulo Enum que generó Listas como sus valores de retorno después de realizar cálculos en enumerables de entrada. Algunos de ellos se enumeran en la siguiente tabla:

No Señor. Función y su descripción
1

chunk(enum, n, step, leftover \\ nil)

Transmite el enumerable en fragmentos, que contienen n elementos cada uno, donde cada nuevo fragmento inicia los elementos del paso en el enumerable.

2

concat(enumerables)

Crea una secuencia que enumera cada enumerable en un enumerable.

3

each(enum, fun)

Ejecuta la función dada para cada elemento.

4

filter(enum, fun)

Crea una secuencia que filtra elementos según la función dada en la enumeración.

5

map(enum, fun)

Crea una secuencia que aplicará la función dada en la enumeración.

6

drop(enum, n)

Deja caer perezosamente los siguientes n elementos del enumerable.