Two mutations the reader survived: dropping '+' from the number dispatch, so +5 reads as a symbol nobody defined, and accepting an unknown string escape as the character after the backslash, so a typo silently reads a different string. Both now have a row, and the known escapes are asserted on the decoded bytes rather than through Form.to_string, which escapes them again and would compare the source with itself.
Description
Languages
OCaml
67.2%
Emacs Lisp
15.2%
C
10.4%
HTML
2.9%
Standard ML
2.8%
Other
1.5%