(defmacro m [x] x) answered "unknown top-level form (defmacro ...)" — refused, but not by name and with no reason, because the refusal list only covered expressions. Now it checks the shape and then refuses, which are two different mistakes and get two different reasons: a defmacro with no body is a typo, a defmacro with a body is a feature that is not here. The reader's new sigils made this urgent rather than tidy. quasiquote, unquote and unquote-splicing are now real heads arriving at the parser, and without a case each they would fall through to Call and come back from the checker as "unknown name quasiquote" — which tells you nothing about what is missing. unquote and unquote-splicing are refused as mistakes rather than as milestones: they mean nothing outside a quasiquote and the reader cannot notice, because it does not track where it is. gensym is neither a reader token nor a special form — it is a function a macro body calls while the macro runs, and there is nowhere for it to run. Refused by name so it does not arrive as an unknown one.
Description
Languages
OCaml
67.2%
Emacs Lisp
15.2%
C
10.4%
HTML
2.9%
Standard ML
2.8%
Other
1.5%