listF :: (Eq a) => [(a, F b c)] -> F (a, b) (a, c)
listFoperate in parallel, indepdenetly of one another. The high level output streams from the individual fudgets are tagged and merged into a single stream. The input stream, which must be tagged, is split up and fed to the appropriate fudget.
(tag,msg)is sent to the fudget tagged
(tag,msg)comes from the fudget tagged
tagged_fudgets :: [(a, F b c)]