Consideremos el siguiente código de Erlang:¿Cómo hacer que el TChan de Haskell difiera los mensajes como las colas de mensajes de Erlang?
-module(testit).
-export([testit/0]).
testit() ->
Pid = spawn(fun testit_proc/0),
Pid ! final,
Pid ! one,
Pid ! two,
io:format("Root finished~n").
testit_proc() ->
receive
one -> io:format("One~n");
two -> io:format("Two~n")
end,
receive
one -> io:format("One~n");
two -> io:format("Two~n")
end,
receive
one -> io:format("One~n");
two -> io:format("Two~n");
final -> io:format("Final~n")
end,
io:format("Spawn finished~n").
La salida es:
Root finished
One
Two
Final
Spawn finished
El procesamiento del mensaje final
se difiere esencialmente hasta el último bloque de recepción en virtud de las recibir patrones anteriores no coincidentes que mensaje.
¿Cómo se hace esto con Haskell's TChan?
De acuerdo. Estas semánticas no existen en los paquetes básicos 'Chan' o' TChan'; deberá implementar una cola diferida usted mismo. –