[Haskell-cafe] Re: Difficulties implementing an incremental parser
using Oleg-style left fold enumerator
Johan Tibell
johan.tibell at gmail.com
Sat Mar 8 17:53:27 EST 2008
On Sat, Mar 8, 2008 at 10:11 PM, Adam Langley <agl at imperialviolet.org> wrote:
> On Sat, Mar 8, 2008 at 12:56 AM, Johan Tibell <johan.tibell at gmail.com> wrote:
> > The problem -- maybe there are others too -- is that when a parser such as
> >
> > many (byte 65)
> >
> > is run it will always return a 'Partial' result waiting for more input
> > even though the enumerator is exhausted. In other words, there's no
> > way to detect end of input.
>
> It appears that you need some way to distinguish the end of input
> from, "that's all I have for now". You could use an empty Bytestring
> in S if you were careful that you maintained that, in normal
> processing, such a state doesn't arise. Otherwise, have a Maybe in
> your state and set it to Nothing when the input is exhausted. Then
> have combinators, like many, handle the EOF case sensibly.
I changed the type of Partial to Maybe ByteString -> Result a so that
the client can specify EOF.
-- Johan
More information about the Haskell-Cafe
mailing list