>> How is this is represented internally. Are there now two entries in a >> symbol table (or similar structure) for "*x*" and "global"? Does the >> entry for "*x*" point to a 5 cell structure known as a symbol and >> likewise for the "global" entry. Does the "symbol value cell" of the >> *x* symbol structure point to the symbol structure for the "global" >> symbol?
> How this is represented internally is not specified.
There isn't even an API to know if a symbol has been declared special. But we can detect it:
(defun specialp (symbol) "Detects whether the symbol has been declared special." (eval `(flet ((f () ,symbol)) (let ((,symbol t)) (not (nth-value 1 (ignore-errors (f))))))))