[Haskell-cafe] intercalate and (byte)strings

Duncan Coutts duncan.coutts at worc.ox.ac.uk
Tue Dec 23 09:21:37 EST 2008


On Tue, 2008-12-23 at 05:21 +0100, wman wrote:
> I encountered the following code :
> 
> -- B == Data.ByteString ; L == Data.ByteString.Lazy
> contents' = B.intercalate B.empty $ L.toChunks contents
> 
> with a previously unencountered function intercalate. A quick google
> query later i knew that it's just intersperse & concat nicely bundled
> and started wondering why anybody would do this, as simple 
> 
> contents' = B.concat $ L.toChunks contents
> 
> would do (probably nearly) the same. The only thing I am able to come
> up with is that it somehow helps streamline the memory usage (if it
> has some meaning).
> 
> Is there some reason to use intercalate <empty> <list> instead of
> concat <list> (probably when dealing with non-lazy bytestrings) ?

I cannot see any advantage. I would be extremely surprised if the more
obscure version was faster.

Duncan



More information about the Haskell-Cafe mailing list