
Given the following works as expected (i.e. prints the value twice): main = Conduit.sourceList [1..14] $= Conduit.map show $= Conduit.iterM putStrLn $= Conduit.iterM putStrLn $$ Conduit.sinkNull I would expect the following to work as well: main = Conduit.sourceList [1..14] $= Conduit.map show $= display $$ Conduit.sinkNull display = Conduit.iterM putStrLn $= Conduit.iterM putStrLn ...but I get the compilation error: Couldn't match expected type `String' with actual type `()' Expected type: Conduit.Conduit String m0 a0 Actual type: Conduit.Source IO () In the second argument of `($=)', namely `display' In the first argument of `($$)', namely `Conduit.sourceList [1 .. 14] $= Conduit.map show $= display' I don't understand why the type of display is inferred to a Conduit.Source. Can somebody please explain? What I want is to have readable names for certain segments in my pipe. Is that possible? Thanks, ovidiu