Scott: benchmark the two and you'll see why we have both :-) On Thursday, September 12, 2013, Scott Lawrence wrote:
> 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<http://www.haskell.org/mailman/listinfo/haskell-cafe> >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe