Why not use http://hackage.haskell.org/packages/archive/newtype/0.2/doc/html/Control-Newtype.html
instead? On Thu, 22 Nov 2012 14:15:00 +0000 Vincent Hanquez <t...@snarc.org> wrote: > 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 > away): > > - serialize work in the put monad, and you have to define a get > instance: which is something that is not required or possible > sometime. > - binary works with lazy bytestrings and got the same problem as > cereal. > - 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 ? > > Thanks, _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe