[Openmcl-devel] Error on macro character after sharpsign colon

Ron Garret ron at flownet.com
Tue Jan 26 18:28:48 PST 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  
>> symbol.
> 
> 
> 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?

rg




More information about the Openmcl-devel mailing list