2
使用管道,其给出:了解`conduit`输出
Prelude> :t (yieldMany [1..10] .| mapC show .| mapC print .| sinkList)
(yieldMany [1..10] .| mapC show .| mapC print .| sinkList)
:: Monad m => ConduitM a c m [IO()]
为什么没有任何输出得到记录?
Prelude> runConduit $ yieldMany [1..10] .| mapC show .| mapC print .| sinkList
Prelude>
我的期望是,为[1..10]
的流,每个元素的String
,即show
,值将被打印。
请解释这个输出。
IIRC,您在最近的CR问题中遇到类似问题。遇到像这样的问题时,请使用带有类型注释的适当源文件。您经常会注意到,当使用'IO'时,GHCi有点不同。如果添加了类型注释,GHC会向您大声说'runConduit $ ...'的结果不是'IO [()]',而是'IO [IO()]'。 – Zeta