Dr Seuss on parser monads: http://t.co/IVyA8wYy
miniblog.
Related Posts
I've had a surprising amount of success asking an LLM to try projects in my toy programming language and report language or tooling issues.
Today it noticed that foo(bar,) is syntactically legal but assert(bar,) is not. The parser error is poor in this case too. A real UX bug!
Counter-intuitively, if you're writing a parser for a programming language, you need it to be a total function. As soon as you build IDE tooling, you need ASTs from invalid or incomplete input.
The parser should return (Ast, List<Error>) rather than Result<Ast, Error>.
I've been using a 'golden tests' library for testing my parser, and it's just delightful. Rather than writing a verbose assertion about the resulting AST, I can just re-run my tests until the output looks good!