Curso de Raku / Programación funcional, concurrente, reactiva y web / Programación reactiva / Supplies en vivo y bajo demanda / Exercises / Dos conexiones

Solución: Dos conexiones

Aquí tienes una posible solución para la tarea.

Código

my $s = Supply.from-list(1, 2, 3);

my @doubled;
my @tripled;
$s.map(* * 2).tap(-> $v { @doubled.push($v) });
$s.map(* * 3).tap(-> $v { @tripled.push($v) });

say @doubled;
say @tripled;

🦋 Puedes encontrar el código fuente en el archivo two-taps.raku.

Salida

[2 4 6]
[3 6 9]

Comentarios

  1. Supply.from-list es bajo demanda, así que reproduce su secuencia completa para cada enganche, de forma independiente.

  2. Eso permite que los dos enganches ejecuten tuberías distintas sobre la misma fuente: uno duplica, el otro triplica. Cada uno ve todo 1, 2, 3, así que los resultados son [2 4 6] y [3 6 9].

Dos conexiones   |   Conectarse tarde