複数のファイルを単一の ByteString として一定のメモリで遅延して読み取るにはどうすればよいですか?
readFiles :: [FilePath] -> IO ByteString
現在、次の実装がありますが、プロファイリングから見たものと私の理解からn-1
、メモリ内のファイルで終了します。
readFiles = foldl1 joinIOStrings . map ByteString.readFile
where joinIOStrings ml mr = do
l <- ml
r <- mr
return $ l `ByteString.append` r
foldl1 joinIOStrings
ここでの欠陥は、IO アクションを適用してからそれらを再ラップしていることであることを理解しています。そのため、それらを適用せずに を置き換える方法が必要だと思います。