ByteString, foldr and lazyness
Mathieu Boespflug
mboes at tweag.net
Thu Nov 27 09:08:09 EST 2008
Hi all,
Here's a ghci session, using bytestring-0.9.1.4 and ghc-6.10:
Prelude> :m Data.ByteString.Lazy.Char8
Prelude Data.ByteString.Lazy.Char8> :m -Prelude
Data.ByteString.Lazy.Char8> foldr (:) [] (concat (Prelude.repeat "a"))
Loading package bytestring-0.9.1.4 ... linking ... done.
"*** Exception: stack overflow
By contrast, using Prelude's foldr and concat:
Prelude> foldr (:) [] (concat (repeat "a")) :: String
<prints out an infinite list>
Each bytestring chunk only contains one letter, so I would expect the
foldr of bytestring to behave just like that of the Prelude.
Is this a bug? A feature? From looking at the bytestring source code I
don't see why the code behaves this way.
Many thanks,
Mathieu
More information about the Libraries
mailing list