JS0*_*JS0 6 haskell haskell-pipes
我有以下代码应该为[Word8]创建管道使用者并将其输出到文件.
import Pipes
import qualified Pipes.Binary as PB
import qualified Pipes.ByteString as PBS
import qualified System.IO as SIO
save :: String -> Consumer [Word8] IO ()
save filename = do
fh <- lift $ SIO.openFile filename WriteMode
_ <- Pipes.for cat PB.encode >-> PBS.toHandle fh
lift $ SIO.hClose fh
Run Code Online (Sandbox Code Playgroud)
但是,没有输出(尽管文件被创建).如果我用"PBS.stdout"替换"PBS.toHandle fh",我得到输出(到stdout).
我也尝试使用SIO.withFile和我创建的整个管道作为参数
SIO.withFile "output.bin" WriteMode $ \fh ->
runEffect $ input-processing >-> Pipes.for cat PB.encode >-> PBS.toHandle fh
Run Code Online (Sandbox Code Playgroud)
它的工作原理.但在这种情况下,我对如何将SIO.withFile放入具有上述签名的函数(仅返回使用者)中一无所知.
谢谢你解释我做错了什么.