[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Nil is a sequence.
> Date: Sun, 20 Dec 87 01:31:43 -0500
> From: quiroz@edu.rochester.cs
> >#1a()
>
> Error: NIL is not a sequence.
> Error signalled by SYSTEM:SHARP-A-READER.
> I am reasonable sure (upon careful exegesis of p.357) that my typo
> should have produced a vector of size zero. [If not persuaded,
> consider (make-array 0 :initial-contents ())]
I agree. The code in SI:SHARP-A-READER takes one more (elt ic 0)
than it needs to but gets away with it only if ic *has* a 0th elt.
Here is a (somewhat messy) fix:
(defun si:sharp-a-reader (stream subchar arg)
(declare (ignore subchar))
(let ((initial-contents (read stream nil nil t)))
(if *read-suppress*
nil
(let ((ic initial-contents)
(d nil))
(do ((i 0 (1+ i)))
((>= i arg)
(make-array (nreverse d) :initial-contents initial-contents))
(push (length (if (> i 0)
(setq ic (elt ic 0))
ic))
d))))))
Unfortunately, a similar problem will still appear in MAKE-ARRAY
if you type something like #2a(()()). Or try
(make-array '(2 0) :initial-contents '(()()))
> Even if this interpretation is not right, the error message lies.
This is ELT's fault. You'll get the same error if you try (elt () 0).
Jeff Dalton, JANET: J.Dalton@uk.ac.ed
AI Applications Institute, ARPA: J.Dalton%uk.ac.ed@nss.cs.ucl.ac.uk
Edinburgh University. UUCP: ...!ukc!ed.ac.uk!J.Dalton