[Haskell-cafe] Data.ByteString woes

David Carter david.m.carter at gmail.com
Wed Apr 15 07:16:01 EDT 2009


Hi,

I am battling with Data.ByteString.Lazy.Char8, and currently losing.
Any help gratefully received. Here's my code:

import qualified Data.ByteString.Lazy.Char8 as B
import Text.Regex.Posix ((=~))
test = B.pack "abc" =~ B.pack "b" :: Bool

This works fine without the ".Lazy", and is also fine under GHC 6.8.1,
but with GHC 6.10.1, it fails with:

    No instances for (Text.Regex.Base.RegexLike.RegexLike
                        Text.Regex.Posix.Wrap.Regex B.ByteString,
                      Text.Regex.Base.RegexLike.RegexMaker
                        Text.Regex.Posix.Wrap.Regex
                        Text.Regex.Posix.Wrap.CompOption
                        Text.Regex.Posix.Wrap.ExecOption
                        B.ByteString)

I then thought I might work around the problem by converting lazy
ByteStrings to strict ones in order to do the regex match. I
discovered toChunks, which is advertised in the documentation as type
ByteString -> [ByteString], but it actually appears to be of type

toChunks :: ByteString -> [Data.ByteString.Internal.ByteString]

and I can't see any way of converting a
Data.ByteString.Internal.ByteString to a (strict) ByteString.

Does anyone know whether this is (a) bug(s) in GHC, Data.ByteString,
Text.Regex.Posix or (maybe most likely) my own limited understanding?
And any ideas for fixes or workarounds (other than the obvious one of
downgrading to GHC 6.8)?

Thanks in advance

David


More information about the Haskell-Cafe mailing list