On Thu, 12 Sep 2013, Tom Ellis wrote:

On Thu, Sep 12, 2013 at 09:21:20AM -0400, Scott Lawrence wrote:
Something's always bothered me about map and zipWith for ByteString. Why is it

    map :: (Word8 -> Word8) -> ByteString -> ByteString

but

    zipWith :: (Word8 -> Word8 -> a) -> ByteString -> ByteString -> [a]

Well, what if you wanted to zipWith a function of type "Word8 -> Word8 ->
Foo" instead of "Word8 -> Word8 -> Word8"?

Then I would do what I do with map, and call `unpack` first.

Either of the two options is usable:

 map :: (Word8 -> Word8) -> ByteString -> ByteString
 zipWith :: (Word8 -> Word8 -> Word8) -> ByteString -> ByteString -> ByteString
   (or)
 map :: (Word8 -> a) -> ByteString -> [a]
 zipWith :: (Word8 -> Word8 -> a) -> ByteString -> ByteString -> [a]

I just don't understand why we have one from each.

--
Scott Lawrence
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to