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