Ich verwende die Pipes-Bibliothek und muss einen ByteString-Stream in einen Strom von Zeilen konvertieren (d. H. String
), ASCII-Codierung verwenden. Ich bin mir bewusst, dass es andere Bibliotheken (Pipes.Text und Pipes.Prelude) gibt, die mir vielleicht Zeilen aus einer Textdatei leichter ergeben, aber wegen etwas anderem Code muss ich Linien wie String
von einem Produzenten von bekommen können ByteString
.Verwenden von Haskell-Pipes-Bytestring zum Iterieren einer Datei nach Zeile
Formaler muss ich eine Producer ByteString IO()
in eine konvertieren, die Linien ergibt.
Ich bin sicher, dass dies ein One-Liner für einen erfahrenen Pipes-Programmierer sein muss, aber ich schaffte es bisher nicht erfolgreich durch alle FreeT
und Lens
-Trocker in Pipes-ByteString zu hacken.
Jede Hilfe wird sehr geschätzt!
Stephan
'ausgekleideten :: Monad m => Produzent ByteString mr -> Produzent String m (Produzent ByteString mr)' 'gefüttert = Falten mappend mempty T.unpack. Sehen Sie sich PT.lines an. PTE.decodeAscii'. Wenn Sie mögliche nicht lesbare Bytestring-Reste löschen möchten, fügen Sie 'Control.Monad.void' hinzu. – Michael