Monadic parser and lexer finally gotten right