Una vista giorni fa, ho chiesto questo question. Ora ho bisogno di una pura versione a thread singolo di questa funzione:Conduit Broadcast
Per ripetere, ho bisogno di una funzione che manda ogni valore ricevuto a ciascun sink e raccoglie i loro risultati. La firma tipo di funzione dovrebbe essere qualcosa di simile:
broadcast :: [Sink a m b] -> Sink a m [b]
migliore Sven
P.S. Non è sequence
, ho provato che:
> C.sourceList [1..100] $$ sequence [C.fold (+) 0, C.fold (+) 0]
[5050, 0]
risultato atteso:
[5050, 5050]
P.P.S. zipSinks
dà il risultato desiderato, ma funziona solo con le tuple:
> C.sourceList [1..100] $$ C.zipSinks (C.fold (+) 0) (C.fold (+) 0)
(5050, 5050)
funziona come un fascino, vi ringrazio molto – SvenK
@SvenK In realtà affonda formano un WRT funtore applicativo zippare, il che rende ancora più facile combinarli. Ho aggiornato la risposta. –
+1, questa soluzione irrompe totalmente !!! Ci sono alcune cose nelle librerie Haskell che ho visto, ma non ho idea di cosa siano a favore finché non avrò scoperto un caso d'uso. Ora so cosa sono ZipLists/Sinks, grazie. – SvenK