λ
S.unfold readeWithBufferOf (16 * 1024, iHandle)
& S.decodeUtf8
& lines
>>= splitColumns
>>= chars
& S.encodeUtf8
& S.fold (S.writeWithBufferOf (16 * 1024) oHandle)
& serially
where
lines = S.splitOn (== '\n') (T.pack <$> SF.toList)
splitColumns = S.fromList . fmap (<> "\n") . T.split (== ',')
chars = S.fromList . T.unpack
прув ми вронгS.repeatM (T.hGetLine iHandle)вот нетормозящий вариант
>>= splitColumns
& S.fold (SF.drainBy $ T.hPutStr oHandle)
& serially
& S.drain
& handleEof
where
splitColumns = S.fromList . fmap (<> "\n") . T.split (== ',')