我使用network-conduit
下面的代码有问题,里面的新来源:如何添加管道哈斯克尔
import Data.Conduit.List as CL
import Data.Conduit.Text as CT
import qualified Data.ByteString.Char8 as S8
import qualified Data.Text as TT
mySource :: ResourceT m => Integer -> Source m Int
mySource i = {- function -} undefined
myApp :: Application
myApp src snk =
src $= CT.decode CT.ascii
$= CL.map decimal
$= CL.map {-problem here-}
$$ src
在问题的地方,我想写类似
\t -> case t of
Left err = S8.pack $ "Error:" ++ e
Right (i,xs) = (>>>=) mySource
{- or better:
do
(>>>=) mySource
(<<<=) T.pack xs
-}
其中(>>>=)
功能推mySource
输出到下一级 (<<<=)
正在发送功能回到上一级
'conduit'是否支持向上游发送数据?我知道'管道'呢。也许你需要使用'pipes'作为你的用例。 – Cactus 2016-03-30 06:54:10
'Conduit'可以用'leftover'将数据重新输入到它自己的输入中,但是在这里,'Conduit'想要将输入推回到它的上游'Conduit'的输入中,这是不可能的。在这种情况下应该使用解析器'Conduit'。 – pat 2017-11-27 21:20:02