[Haskell-cafe] Re: Proving my point

Philippa Cowderoy flippa at flippac.org
Fri May 16 18:45:51 EDT 2008

On Sat, 17 May 2008, Achim Schneider wrote:

> There's at least one token before any recursion, so I guess not. After
> all, it terminates. It's my state that does not succeed in directing
> the parser not to mess up, so I'm reimplementing the thing as a
> two-pass but stateless parser now.

In most cases, you're better off stateless unless you've got a really good 
reason for it. Or at least, not using the state for anything that affects 
the parse itself.

> Definitely the easier and clearer
> thing to do: I can have an end of line token that carries the number of
> trailing spaces, so I got perfect indent information without any pain
> involved, at all, and don't have to make parsers fail based on state.

Definitely! Are you doing some form of layout? It's certainly not worth 
doing in one pass IMO, I ended up with a three pass design much like that 
in the Haskell 98 report. Well, that's an understatement - I took the 
algorithm from it! 

flippa at flippac.org

There is no magic bullet. There are, however, plenty of bullets that
magically home in on feet when not used in exactly the right circumstances.

More information about the Haskell-Cafe mailing list