2017-12-21 3 views
2

Ich möchte einen Conduit, der eine Quelle als Argument verwendet und die Ausgabe des Letzteren kombiniert mit seiner eigenen verwendet. In Arten, etwas wie z.B.Kombinieren Sie die Ausgabe der Quelle in Strom

combine :: ConduitM() Int m() 
     -> ConduitM Int (Int, Int) m() 

wo ich hoffen würde, dass die folgende

runConduit $ yieldMany [(1::Int)..] 
      .| combine (yieldMany [100..]) 
      .| takeC 5 
      .| sinkList 

[(1,100), (2,102), (3,103), (4,104), (5, 105)] 

Dies ergibt eine vereinfachte Version meiner Anwendungsfall. Aber ich bin nicht sicher, wie man darüber hinaus geht

combine source = mapC $ \i -> do 
    -- stream output from source somehow 
    (i, i) 

Ist das möglich?

Antwort

2

Ich glaube, Sie suchen ZipSource, die in Ihrem Fall wie folgt aussehen:

getZipSource $ (,) 
    <$> ZipSource (yieldMany [1..]) 
    <*> ZipSource (yieldMany [100..]) 
Verwandte Themen