[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Gcl-devel] some GCL bugs revealed by ansi test suite
From: |
Paul F. Dietz |
Subject: |
Re: [Gcl-devel] some GCL bugs revealed by ansi test suite |
Date: |
Wed, 14 Aug 2002 22:25:53 -0500 |
(The stack extension worked; thanks.)
ANSI compliance bugs in gcl compiled with --enable-ansi:
1. LAST should take an optional second argument (which defaults
to 1), but only takes one argument.
2. LDIFF doesn't work on dotted lists.
(LDIFF '(A B C . D) 'D) should give (A B C)
but instead throws an error
3. TAILP doesn't work on dotted lists.
(TAILP '(A B C . D) 'D) should be true, but
instead throw an error.
4. ASSOC-IF is not taking the required :KEY argument.
5. When ASSOC-IF is called on a list in which one of the elements
is NIL, it does not ignore that element.
Example:
(ASSOC-IF #'EVENP '((1 . a) nil (3 . b) (4 . c) (6 . d)))
should yield (4 . c)
but instead is throwing an error.
6, 7. Same as 4, 5, but for ASSOC-IF-NOT.
8, 9. Same as 4, 5, but for RASSOC-IF.
10, 11. Same as 4, 5, but for RASSOC-IF-NOT.
12. BUTLAST doesn't work on dotted lists.
(BUTLAST (LIST* 1 2 3 4) 1) should yield (1 2)
but instead throws an error.
13. NBUTLAST doesn't work on dotted lists (same as 12).
14. This expression
(let ((p (copy-list '(a 1 b 2)))
(foo nil))
(setf (getf p 'a (progn (setf foo t) 0)) 3)
(and
(eql (getf p 'a) 3)
(eql (getf p 'b) 2)
(eql
(loop
for ptr on p by #'cddr count
(not (member (car ptr) '(a b))))
0)
foo))
should evaluate to T, but (contrary to the standard) the third
argument to the getf in the setf form is not being evaluated.
(See the CLHS entry for GETF.)
15. This is a tricky one. As I read the standard, the :test or :test-not
function for SET-EXCLUSIVE-OR must preserve the order of the items being
compared. That is, the first must be from the first list and the second
from the second list. This is not being done -- the argument order is
getting reversed.
Paul