Ticket #6 (new defect)

Opened 7 years ago

Last modified 9 months ago

Backquote ,@,@ handling

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

Description

Given:

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

reading

``(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

comment:1 Changed 4 years ago by attila.lendvai

  • Cc attila.lendvai@… added

i've tested  http://dwim.hu/project/hu.dwim.def on ccl and its with-macro expansion is broken due to this.

comment:2 Changed 19 months ago by jjgarcia

I believe this bug is invalid because of the reasons exposed here:  http://sourceforge.net/p/ecls/bugs/251/

comment:3 Changed 9 months 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.