I should point out explicitly that if you don't document what "read-internal-token" returns, but only say that READ understands it, then it can just as well do no I/O and simply return constant values: whatever READ cares to use as a "no values macro" flag!