I think I've hit an ugly clisp bug that hits the Common Lisp implementation of
neoteric-expressions. Has anyone seen anything like this? Or, am I
misunderstanding something?
Here's the details: I think clisp version 2.47 and 2.48 don't preserve any
whitespace, even when you call "read-preserve-whitespace", immediately after
the call. As a result, "(a ())" and "(a())" look exactly alike, and both get
translated to "((a))". Similarly, "{a + {b * c}}" becomes "{a +{b * c}}". The
expression "(a ())", with TWO spaces after the "a", is handled correctly.
My test script is:
(progn (write (read-preserving-whitespace *standard-input* t nil)) (write
(peek-char)) (princ " ") (write (read-preserving-whitespace *standard-input* t
nil)) (values))
With the input:
q56 t78
(one space between)
Running this on sbcl (Steel Bank), I get the expected:
Q56#\ T78
On GNU CLISP 2.47 (2008-10-23), I get the really-really-wrong result:
Q56#\t T78
That is, after reading the atom "q56" the following delimiting whitespace is
*consumed* by read-preserving-whitespace. Using TWO spaces as the separator
makes it work fine again.
Such a bug was reported on clisp, but was reported fixed in 2008:
http://sourceforge.net/tracker/?func=detail&atid=101355&aid=1890854&group_id=1355
This could be worked around, but with pain. I prefer to avoid pain :-).
--- David A. Wheeler
------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter
_______________________________________________
Readable-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/readable-discuss