(I tried to send this to the list on Friday, but it seems to have gotten dropped)
 
When I run this code with the latest release (2.38), I get strange results:
 
----
(format t "~%~%test case 1:~%")
 
(let* ((testme nil)
       (testform ``(a ,@',testme d)) )
  (princ testform)
  (format t "~%")
  (princ (eval testform)) )
 
 
 
(format t "~%test case 2:~%")
(let* ((testme '(b c))
       (testform ``(a ,@',testme d)) )
  (princ testform)
  (format t "~%")
  (princ (eval testform)) )
 
 
 
(format t "~%~%")
----
 
I would expect evaluating testform to give me (a d) in the first case and (a b c d) in the second case.  However, clisp seems to truncate the list after the ,@ portion of the expression, giving me (a) and (a b c) from the test cases.
 
I narrowed it down to the problem being introduced in 2.33.84 (CVS tag clisp_2_33_84-2005-07-07).  When I run it in this release (and the CVS head), I get:
 
----
[1]> (lisp-implementation-version)
"2.33.84 (2005-07-07) (built 3350413236) (memory 3350413776)"
[2]> (load "~/backquote-test.lisp")
;; Loading file /home/mcross/backquote-test.lisp ...
 
test case 1:
'(A)
(A)
test case 2:
'(A B C)
(A B C)
 
;; Loaded file /home/mcross/backquote-test.lisp
T
----
 
When I run it in 2.33.2 (CVS tag clisp_2_33_2-2004-06-02) and older releases, it works:
 
----
[1]> (lisp-implementation-version)
"2.33.2 (2004-06-02) (built 3350412156) (memory 3350412304)"
[2]> (load "~/backquote-test.lisp")
;; Loading file /home/mcross/backquote-test.lisp ...
 
test case 1:
(CONS 'A (APPEND 'NIL '(D)))
(A D)
test case 2:
(CONS 'A (APPEND '(B C) '(D)))
(A B C D)
 
;; Loaded file /home/mcross/backquote-test.lisp
T
----
 
I am running on Ubuntu Linux 5.10.
 
I don't see anything obvious in the NEWS file for 2.38 that would affect this.  I'm going to look around to see if I can understand what's going on, but I've never delved into clisp internals before.  Can someone take a look at this also?
 
Thanks,
 
--
Matt Cross
Senior Lead Software Engineer
iRobot Corporation
63 South Avenue, Burlington, MA 01803
781-418-3373 (ph)
781-345-0201 (fax)
mcross@irobot.com
www.irobot.com