mapM_ for bytestring

Johan Tibell johan.tibell at gmail.com
Wed Sep 11 17:33:59 CEST 2013


On Wed, Sep 11, 2013 at 7:15 AM, Duncan Coutts <duncan.coutts at googlemail.com
> wrote:

> On Wed, 2013-09-11 at 15:56 +0200, Nicolas Trangez wrote:
> > I looked into this when this thread started, but bumped into at least
> > one 'issue': when defining (OTOH) something like
> >
> > import qualified Data.ByteString as BS
> > import qualified Data.ByteString.Char8 as BS8
> >
> > class Foldable t where
> >     type Elem c :: *
> >     foldr :: (Elem t -> b -> b) -> b -> t -> b
> >
> > instance Foldable BS.ByteString where
> >     type Elem BS.ByteString = Word8
> >     foldr = BS.foldr
> >
> > instance Foldable BS8.ByteString where
> >     type Elem BS8.ByteString = Char
> >     foldr = BS8.foldr
> >
> > which fails because BS.ByteString and BS8.ByteString are the same.
>
> Right. I fear there's very little one could do about that. We do have
> one single type that is a specialised container for two types. That's
> fairly unusual. I'd probably just use Word8, especially since Char stuff
> is a bit iffy since it's really "Char8" not a full Char.
>

It happens in containers and unordered-containers as well and I suspect we
will see it any time we want both a lazy and strict (in the container
sense) version of a data type.

-- Johan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/libraries/attachments/20130911/371bce58/attachment.htm>


More information about the Libraries mailing list