我有一个函数,它接受一个惰性的ByteString
,我希望它返回严格的ByteStrings
列表(惰性应该转移到输出的列表类型)。
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as L
csVals :: L.ByteString -> [B.ByteString]
我希望出于多种原因, 一些词法分析函数 需要严格的
ByteString
,而我可以保证上面csVal
的输出非常小。
如何在不分块的情况下使ByteString
变得更加严格?
更新0
我想把一个LazyByteString
转换成一个包含所有数据的strict ByteString
。
toChunks
有什么问题?从最初的一瞥来看,它似乎保持了惰性。 - Mikhail GlushenkovtoChunks
展示了这种结构。要把列表全部放入一个严格的字节串中,没有比concat . toChunks
(或相同的函数)更好的方法了。在许多典型情况下,列表只有一个元素--在这些情况下,concat . toChunks
也相对高效。 - sclv