[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