[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Structure sharing

KCL recently surprised me with the following behavior:

(setf foo 'filename) => FILENAME

(setf bar (namestring foo)) => "FILENAME"

(setf bar (nstring-downcase bar)) => "filename"

foo => {causes error}

It seems that in KCL. namestring of a symbol merely returns a
simple-string whose characters are SHARED with the print-name of the
symbol FILENAME!

As far as I can tell, this kind of sharing is perfectly legit, even
though it is very unintuitive.  Even parse-namestring returns a
pathname that shares characters with the string it was given!

I think it would be a good idea for CLtL to explicity state that
unless otherwise noted, a given function may return an object that
shares structure with another object.  And it would help to give a few
examples like parse-namestring and namestring to point out the
non-obvious consequences.

	-- Nick