[Haskell-cafe] Bytestring map/zipWith rationale

Scott Lawrence bytbox at gmail.com
Thu Sep 12 15:21:20 CEST 2013

Hello all,

Something's always bothered me about map and zipWith for ByteString. Why is it

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


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

? Obviously they can be transformed into each other with pack/unpack, and as I 
understand it, the compiler performs sufficient optimizations so that there's 
no performance hit to doing things like (pack $ zipWith xor a b), but it still 
seems inconsistent. Is there a deep reason for this?

Scott Lawrence

Linux baidar 3.10.9-1-ARCH #1 SMP PREEMPT Wed Aug 21 13:49:35 CEST 2013 x86_64 GNU/Linux

More information about the Haskell-Cafe mailing list