It seems that tokens that are derived from \let command can't always be used literally. The following fails. I want to test if the next character is a numerical constant. Of course, the test is not complete; I am only asking a question here.
\newcount\cnta
\def\gobble#1{}
\def\cmda{\futurelet\next\cmdb}
% \next is unabsorbed but remains as character 2. \gobble is meant to gobble 2.
\def\cmdb{\cnta0\next\space\gobble}
\cmda 2
\showthe\cnta
\nextis here not expandable and therefore ends the read number mode. You are right, such implicit tokens are not generally interchangeable with the explicit tokens. The will case the same result if they are typeset but not in most other cases. For example you can't use an implicit token inside\csname ..\endcsname. I had this issue with thetikz-timingparser. – Martin Scharrer♦ Jun 3 '12 at 23:49