
ganesh:
Hi,
On 01/03/2011 06:35, Bryan O'Sullivan wrote:
Well, wait. That paragraph portion seems to confuse things. At the very least, it confuses me, because I surely didn't suggest using concat, as that would be silly. I want to see four entry points for writing:
fdWrite :: Strict.ByteString -> IO Int fdWriteAll :: Strict.ByteString -> IO () fdWritev :: [Strict.ByteString] -> IO Int -- turn the list into an iovec, then call writev fdWritevAll :: [Strict.ByteString] -> IO ()
People would normally use the 'All' variants, but there are times when you really do want to know if you've performed a short write so that you can handle it yourself.
What's the practical difference between a (lazy) list of strict bytestrings and a lazy bytestring?
Nothing. Lazy ByteStrings are slightly more efficient (avoid one indirection from the (:) cell).