
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