
On Wed, 2008-07-30 at 02:23 +0100, Chris Kuklewicz wrote:
Summary: I have two new Get-like monads for binary data (byte-aligned) that also (*) Suspend parsing and request more import when reading past the end of data. It is possible to respond with Nothing to indicate the hard end of data. (*) Return failures instead of calling error (*) Offer lookAhead,lookAheadM,lookAheadE like Data.Binary.Get (*) Are BinaryParser instances from Data.Binary.Strict.Class (*) Are Monad Transformers (and thus MonadIO) (*) Are MonadError,Plus,Reader,Writer,State and Applicative,Alternative (*) They differ because one is also MonadCont while the other is simpler (*) Simplified Non-transformer versions (applied to Identity) are defined
[..]
I have tested the code, but it is still quite new. I doubt I will have time to make a proper cabal release. I may see if the maintainers of the binary-strict or binary packages are interested in a fancier Get monad.
Yep, definitely interested. Sounds like we could make something that would satisfy the needs of existing users of the binary and binary-strict packages. We'll have to look closely at the performance costs of the new features but my intuition is that a non-transformer but continuation based version that has error handling (and plus/alternative) and can request more input should have minimal cost. Duncan