[Haskell-cafe] Re: Difficulties implementing an incremental parser using Oleg-style left fold enumerator

Adam Langley agl at imperialviolet.org
Sat Mar 8 16:11:30 EST 2008

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.


Adam Langley agl at imperialviolet.org http://www.imperialviolet.org

More information about the Haskell-Cafe mailing list