У меня есть функция, которая принимает ленивый ByteString
, что я хочу иметь возвращаемые списки strict ByteStrings
(лень переводить на списочный тип вывода).
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as L
csVals :: L.ByteString -> [B.ByteString]
Я хочу сделать это по разным причинам, несколько функций лексирования требуют строгих ByteString
s, и я могу гарантировать, что выведенные строгие ByteString
s в выходных данных csVal
s выше очень малы.
Как мне "строгать" ByteString
без разделить их?
Обновление0
Я хочу взять Lazy ByteString
и сделать один строгий ByteString
, содержащий все его данные.
toChunks
? На первый взгляд кажется, что он консервирует лень. - person Mikhail Glushenkov   schedule 19.10.2011toChunks
раскрывает эту структуру. Чтобы поместить весь список в одну строгую байтовую строку, нет другого способа, кромеconcat . toChunks
(или эквивалента). Во многих типичных случаях список будет состоять из одного элемента — в этих случаяхconcat . toChunks
также будет относительно эффективным. - person sclv   schedule 19.10.2011