More pathname madness with #p""

Faré <[email protected]> Tue, 30 Aug 2005 23:23:11 -0400
Newsgroups gmane.lisp.steel-bank.devel,gmane.lisp.cmucl.devel,gmane.lisp.cmucl.general,gmane.lisp.openmcl.bugs,gmane.lisp.gcl.devel
Message-ID <[email protected]>
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.


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf