Как я могу передать поток из файла в процесс?haskell кабели от файла к процессу
Data.Conduit.Binary.sourceFile :: MonadResource m => FilePath -> Producer m ByteString
Data.Conduit.Process.sourceProcessWithStreams :: CreateProcess -> Producer IO ByteString -> Consumer ByteString IO a -> Consumer ByteString IO b -> IO (ExitCode, a, b)
Единственное, что является MonadResource
является ResourceT
, в частности IO
не MonadResource
.
Я вижу, что есть sourceHandle
, который является IO
, но я бы предпочел не обрабатывать свой собственный файл, который открывается и закрывается, если это возможно. Кроме того, я хочу понять эту проблему, если я ее понимаю в другом пространстве.
Там также Data.Conduit.Lift.distribute
:
distribute :: (Monad (t (ConduitM b o m)), Monad m, Monad (t m), MonadTrans t, MFunctor t) => ConduitM b o (t m)() -> t (ConduitM b o m)()
, так что я хотел бы получить что-то вроде
distribute $ sourceFile "foo" :: ResourceT (ConduitM i ByteString IO)()
, но я не знаю, как использовать это.
Что вы потокового? И к какому процессу? И вообще, что вы пытаетесь сделать? – Sibi
Я исправил свой ответ. – ErikR
Ничего, что вы сможете приготовить, будет почти таким же простым, как использование 'sourceHandle' и закрытие дескриптора самостоятельно. 'ResourceT' хорош, но это действительно просто удобство. – Michael