Opened 15 years ago

Last modified 8 years ago

#6 new defect

Backquote ,@,@ handling

Reported by: gz Owned by: gb
Priority: minor Milestone:
Component: ANSI CL Compliance Version: 1.1
Keywords: Cc: attila.lendvai@…



(defparameter *c* `((list :x 1) (list :y 2)))


``(f ,@,@ *c*)

should return something that creates:

(f :x 1 :y 2)

OpenMCL's backquote generates:

(f (:x 1) : y 2)

Steele's reference backquote implementation (which is conditionalized out in "ccl:lib;backquote.lisp") has other problems, but handles this case as the user expects (and I tend to think that their expectation is reasonable.)

Change History (3)

comment:1 Changed 12 years ago by attila.lendvai

  • Cc attila.lendvai@… added

i've tested on ccl and its with-macro expansion is broken due to this.

comment:2 Changed 9 years ago by jjgarcia

I believe this bug is invalid because of the reasons exposed here:

comment:3 Changed 8 years ago by orivej

I think this bug is valid because the standard is clear enough about the rules of expansion, according to which it goes like this (with very obvious reductions being implicit here):

(defparameter *c* `((list :x 1) (list :y 2)))
``(f ,@,@*c*)
`(append (list 'f) ,@*c*)
(append (list 'append) (list '(list 'f)) *c*)

and after second evaluation returns

(f :x 1 :y 2)
Note: See TracTickets for help on using tickets.