[Haskell-cafe] class Bytestringable or ToBytestring
kudahkukarek at gmail.com
Thu Nov 22 16:42:34 CET 2012
Why not use
On Thu, 22 Nov 2012 14:15:00 +0000 Vincent Hanquez <tab at snarc.org>
> Hi cafe,
> I've been adding lots of types recently that looks more or less like:
> newtype A = A ByteString
> data B = B ByteString
> This is great for extra type safety and letting the compiler do its
> job, however getting the bytestring back requires boiler plate.
> At the moment either you give access to the constructor, which is not
> always wanted, or you use the record syntax to create a function to
> extract just the bytestring.
> The latter is fine for 1 or 2 types, but the scheme fall apart when
> having many of those types and do pollute namespace.
> I'm basically after something that looks like this:
> class ToByteString a where
> toByteString :: a -> ByteString
> Before anyone suggest the Serialize interface from cereal or the
> Binary interface from binary which both looks quite similar (from far
> - serialize work in the put monad, and you have to define a get
> instance: which is something that is not required or possible
> - binary works with lazy bytestrings and got the same problem as
> - a serialize instance that just do a single putByteString is really
> slow: 12 ns to 329 ns (26x time slower) on the same exact data on one
> isolated bench)
> - neither of those packages are in the platform.
> If that doesn't exists, could it be a worthy addition to bytestring ?
> is this a good idea in general ?
> is there any other way ?
More information about the Haskell-Cafe