私はこのコードを持っています:
import Pipes
import Pipes.Safe
import qualified Pipes.Prelude as P
import qualified Pipes.Safe.Prelude as P
import System.IO
import Data.Text as T
import Data.Text.IO as TIO
import qualified Pipes.Prelude.Text as T
someFunc :: IO ()
someFunc = runSafeT $
P.withFile file1 ReadMode $ \file1Handle -> do
file2 <- liftIO $ TIO.hGetLine file1Handle
runEffect $
for (P.zip (T.fromHandleLn file1Handle)
(T.readFileLn $ T.unpack file2))
(\(l1,l2) -> do yield l2
yield l1)
>-> T.stdoutLn
しかし、それは非常にハックに思えます.最初のファイルの最初の行で読んだものから、パイプ内から2番目のファイルを開くことができるようにしたいと思います. 何か案が?