Is there already a list class? - support for specialized lists?
Stefan O'Rear
stefanor at cox.net
Wed Jan 10 10:18:28 EST 2007
On Wed, Jan 10, 2007 at 12:19:08PM +0100, Marc Weber wrote:
> I think we should rewrite ByteString and call it WordString.. eg
>
> data WordString word = ...
> type ByteString = WordString Word8
>
> Than the problem would be gone and we would also gain an ByteString
> implementation for Unicode, right? *smile*
>
> But I don't know ByteString that well by now so I might be totally
> wrong..
WordString a is a good idea, it would be *much* more efficient then
[a], *but* it would be nowhere near as efficient as ByteString.
WordString Word8 would require 4 or 12 bytes per character - one for
a pointer (because you can't unpack a type variable), and optionally
8 more for the Word8 heap object (4 for the tag word, 1 for the Word8#,
and 3 for alignment). By contrast, ByteString requires 1 byte per character,
and [Word8] requires 12 or 20. (And 64-bit platforms will make it 1/8/24...)
Furthermore, as a selfish American, I use the US-ASCII subset of Unicode
exclusively, and don't want my ten-gigabyte bytestrings to quadruple in
size and sloth. I would much rather see a Data.ByteString.UTF8.
More information about the Libraries
mailing list