> The initial question was whether to signal an error or not in such a
> case. I think it should be an error, because the expression is not
ok, we have different definitions of "well-formed";-)
> you handle the dot in a special way on the symbol level. This has no
> advantages, except that you, by definition, cannot use the dot as a
and in a list:
>> never use it. And, the user has always an option to intern a string.
>> It might get tricky with the dot inside a list but it is possible;
>> : '(1 2 3 . `(cons (intern ".")) 4 . 5)
>> -> (1 2 3 . 4 . 5)
> This will not work, if I understand your implementation correctly. The
> cons in the backquote is evaluated at read time, so your reader again
> will see the interned dot and assume it is a dotted pair.
Well, it does work. It works because the reader doesn't see the dot
symbol but a cons pair.
Using the dot symbol is no fun:
: (def `(cons 'quote (intern ".")) 'hi)
: '(1 2 3 . `(val (intern ".")))
-> (1 2 3 . hi)
but the dot symbol is usually not used that way anyway.
I quite like the escaping you introduced in picolisp recently (which
prints the dot symbol differently from the cons dot). I'll think about
introducing it into my printer and reader:-)
Thanks for your feedback,