Читая TheTeXbook дошёл до определений макросов и примера рекурсии, но не совсем понимаю, почему оно работает именно так.
\def\length#1{{\count0=0 \getlength#1\end \number\count0}}
\def\getlength#1{\ifx#1\end \let\next=\relax
\else\advance\count0 by1 \let\next=\getlength\fi \next}
Собственно вот пример кода и getlength принимает по одному символу. Почему? Где хранятся остальные символы аргумента?
Есть догадка: это происходит из-за того, что аргумент уже токенизирован техом при чтении length, но верна ли она?