On Wed, Jan 19, 2011 at 9:32 PM, Johan Tibell <[email protected]> wrote:
> On Wed, Jan 19, 2011 at 6:51 PM, John Millikin <[email protected]> wrote:
>> Most people who work with binary data have had to construct
>> bytestrings at some point. The most common solution is to use a
>> "Builder", a monoid representing how to construct a bytestring. There
>> are currently three packages (that I know of) which include builder
>> implementations: binary, cereal, and blaze-builder.
>>
>> However, all of these libraries have additional dependencies beyond
>> just "bytestring". All three depend on "array" and "containers", and
>> blaze-builder additionally depends on "text" (and thus "deepseq").
>> Since the current implementation of GHC uses static linking, every
>> additional dependency adds to the final size of a binary.
>>
>> Obviously the "Builder" concept is very useful, as it has been
>> implemented at least three times. How about adding it to the
>> "bytestring" package itself? We could have a module
>> Data.ByteString.Builder, with functions (at minimum):
>>
>> toByteString :: Builder -> Data.ByteString.ByteString
>> toLazyByteString :: Builder -> Data.ByteString.Lazy.ByteString
>>
>> fromByteString :: Data.ByteString.ByteString -> Builder
>> fromLazyByteString :: Data.ByteString.Lazy.ByteString -> Builder
>>
>> empty :: Builder
>> append :: Builder -> Builder -> Builder
>>
>> Plus whatever implementation details might be useful to expose.
>>
>> Existing libraries could then add their extra features (word ->
>> builder for binary and cereal, UTF/HTTP for blaze-builder) on top of
>> the existing types.
>>
>> Is this something the community is interested in? Is there any work
>> currently aimed at this goal?
>
> I think both Duncan and I agree that we should move
> Data.Binary.Builder (which doesn't have any extra dependencies) to
> bytestring. I've already added Data.Text.Lazy.Builder to text.
>
> Johan
>
> _______________________________________________
> Haskell-Cafe mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>

Isn't Simon Meier working on migrating his code from blaze-builder
into binary? I agree with John that it would make more sense to go in
bytestring. Assuming that happens, would the builder from text end up
being based on it?

Michael

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to