ross:
On Thu, Feb 12, 2009 at 07:40:21AM -0800, Don Stewart wrote:
ross:
On Thu, Feb 12, 2009 at 07:28:07AM -0800, Don Stewart wrote:
ross:
Here's a concrete suggestion: have Data.Binary.Put export the existing function
tell :: Builder -> Put
and also
execPut :: PutM a -> Builder execPut = sndS . unPut
What's the use case?
Quoting a previous message:
I imagine one might want to make a Builder for a composite object, using the Binary instances of some types. And one might want to go the other way too, defining a Binary instance using an existing Builder.
Sounds good. Do you just want these exposed as is?
Yes, though Antoine's suggestion of exporting tell as putBuilder may be better.
Is this what you're looking for? Thu Feb 12 09:47:34 PST 2009 Don Stewart <dons@galois.com> * Expose Builder/Put relationship, courtesy Ross New patches: [Expose Builder/Put relationship, courtesy Ross Don Stewart <dons@galois.com>**20090212174734] { hunk ./src/Data/Binary/Put.hs 22 , PutM(..) , runPut , runPutM + , putBuilder + , execPut -- * Flushing the implicit parse state , flush hunk ./src/Data/Binary/Put.hs 112 tell b = Put $ PairS () b {-# INLINE tell #-} +putBuilder :: Builder -> Put +putBuilder = tell +{-# INLINE putBuilder #-} + +-- | Run the 'Put' monad +execPut :: PutM a -> Builder +execPut = sndS . unPut +{-# INLINE execPut #-} + -- | Run the 'Put' monad with a serialiser runPut :: Put -> L.ByteString runPut = toLazyByteString . sndS . unPut }