[Haskell-cafe] Bit string
Thomas Conway
drtomc at gmail.com
Thu Sep 14 21:35:45 EDT 2006
Hi all,
I'm doing some work with ASN.1, and I'm thinking about how to
represent the type "BIT STRING".
The obvious, and inefficient representation would be
> type BitString = [Bool]
A reasonable sparse representation might be
> type BitString = [Integer]
where the integers represent the positions of the non-zero bits, but
other implementations (e.g. C & C++ based ones) mostly seem to use
dense representations, and there are certain predictability advantages
to be had by following existing implementations in this regard.
But given that a value of type BIT STRING is allowed to have leading 0
bits, which have no semantic effect, another representation would be
> type BitString = [Word64]
(I'm a modern type, and believe in 64bit computing ;-), but you could
use Word32 if you liked).
However, after a few moments' consideration, I realized, that if I was
going to use a representation like that, I could probably use
> type BitString = Integer
which already has [I assume] a carefully optimized implementation.
Also, it ends up being significantly more strict than a list
representation, which is probably a good thing in most situations.
My question for all present is: Have I missed either a problem with
using Integer, or have I overlooked a better representation?
T.
More information about the Haskell-Cafe
mailing list