[Openmcl-devel] Error on macro character after sharpsign colon
ron at flownet.com
Wed Jan 27 02:28:48 UTC 2010
On Jan 26, 2010, at 5:55 PM, Terje Norderhaug wrote:
> On Jan 26, 2010, at 2:59 PM, Ron Garret wrote:
>> On Jan 26, 2010, at 2:17 PM, Terje Norderhaug wrote:
>>> On Jan 26, 2010, at 1:58 PM, Ron Garret wrote:
>>>> This has nothing to do with uninterned symbols.
>>> Don't let the particular situation lead you astray: This does have to
>>> do with reading of uninterned symbols. Rather than loading a third
>>> party module, I could just as well have written the uninterned symbol
>>> "#:<" in my own code and expected it to be read without error, just
>>> as "<" would be read as a symbol.
>> If tokens were first-class entities that might be a reasonable
>> expectation, but they aren't. If you think through the process in
>> detail you will see that having "<" be read as a (possibly
>> interned) symbol by a user-defined reader macro function is
>> fundamentally incompatible with "#:<" being read as an uninterned
> No, there is no "fundamental incompatibility".
Yes there is.
> Ceci n'est pas une pipe.
Huh? (Yes, I know of the Magritte painting to which this alludes, but the relevance to the matter at hand eludes me.)
> Let's not confuse the textual representation with the object -
> ironically of type "symbol"... ;-)
That's not the issue. The issue is that in order to read a symbol, the reader first has to assemble a TOKEN. By what method do you propose that it do so in the case that #: is followed by another macro character? Calling the macro function for that character can't work because there is no way that that function can return a token because tokens are not first-class data structures in Common Lisp. So what is it supposed to do?
More information about the Openmcl-devel