A quasiquote is to nest, counting depth as SBCL's backquote does

This commit is contained in:
Joseph Ferano 2026-09-25 09:54:05 +07:00
parent ddff84ffed
commit f6cdb4e31b

View File

@ -81,7 +81,8 @@ back after. It counts across every module a compiler process loads — each roun
the program's module, and every expansion in a session. Rules out a counter per
module, seeded or not.
** TODO A quasiquote inside a quasiquote is refused
** NEXT A quasiquote inside a quasiquote is refused
Decided 2026-09-25: nest the way SBCL and Clojure both do. The desugaring counts depth, an unquote belongs to the innermost quasiquote, and =~~x= reaches out two levels — SBCL's =*backquote-depth*= in =src/code/backq.lisp=. The reader stays as it is.
Nothing counts nesting levels — not the reader, deliberately, and not the
desugaring. Only a macro that writes a macro wants one.