[Haskell-cafe] Bytestring package: Int and Int64

Daniel Díaz danieldiaz at asofilak.es
Tue May 24 12:45:41 CEST 2011

 On Tue, 24 May 2011 10:42:34 +0200, Johan Tibell wrote:
> Hi Daniel,
> On Tue, May 24, 2011 at 10:07 AM, Daniel Díaz
> <danieldiaz at asofilak.es> wrote:
>> Hi, cafe,
>> I just feel curiosity. In the bytestring package, Data.ByteString 
>> module,
>> functions like length, index, and others with Int in its type 
>> signature,
>> have Int64 in the analogous Data.ByteString.Lazy version. What is 
>> the
>> reason?
> A strict ByteString is one contiguous chunk of memory so it cannot be
> longer than an Int (if we assume and Int is either 32 or 64 bits for 
> a
> second). However, a lazily generated stream can be much bigger than
> main memory, so it makes sense to use a bigger type to refer to e.g.
> it length. Now, you might say that lazy ByteString should use Integer
> instead of Int64. However, Int64 performs much better so I think the
> loss of generality is worth it.
> Johan

 Thanks, it makes sense.

More information about the Haskell-Cafe mailing list