The IRC discussion spawned by my previous bug report raised the point
of read-write invariance of #p syntax, and the fact that once again,
cmucl, sbcl and openmcl (and gcl, too) might be wrong by not
distinguishing the following:

(MAKE-PATHNAME :DIRECTORY NIL)
=> #P""

(MAKE-PATHNAME :DIRECTORY '(:RELATIVE))
=> #P""

clisp, allegro and lispworks agree that it is a good idea to print the
latter as follows
=> #P"./"
which of course pushes back the problem when you try to print
(MAKE-PATHNAME :DIRECTORY '(:RELATIVE "."))
=> #P"./"
at least, it can be reasonably considered (barring funky filesystem
semantics) that
(MAKE-PATHNAME :DIRECTORY '(:RELATIVE)) and (MAKE-PATHNAME :DIRECTORY
'(:RELATIVE ".")) are somehow equivalent in the "modern" operating
systems underlying the considered lisp implementations, whereas they
are not at all the same as (MAKE-PATHNAME :DIRECTORY NIL). I guess
that to strictly preserve read-write invariance, the number of "." in
the #P"././././" representation could be one more than the number of
"." just after the :relative...

The whole issue boggles my mind. Now it can boggle yours, too.

Hopefully no more language lawyering for today.

[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ]
The reason truth is stranger than fiction is that fiction has to make sense.


Reply via email to