
On Sat, 2 Feb 2008, Antoine Latter wrote:
I'm not a fan of parameterizing the "Stream" class over the monad parameter `m': <snip> I looked through the sources and I didn't see anywhere where this parameterization gained anything. As a proof of this I did a mechanical re-write removing the class parameter, and the library still seems to work.
AngloHaskell attendees may remember the quickie I did on handling the layout rule via a parsing monad transformer - removing this would stop me from generating the input stream in a particular monad and break the trick behind it. The idea was to use a lexing monad which the parser would be stacked on top of, such that the parser could communicate with the lexer and delayout function. Then when the parser failed at a point where a closing brace would allow parsing to continue, it could backtrack in the stream, tell the lexer that it failed the first time and ask for the character again - and if the layout rule allows it at that point, the returned character would this time be a closing brace. -- flippa@flippac.org Performance anxiety leads to premature optimisation