这有效:
(format nil "~{~a~^,~}" '(1 2 3)) ; => "1,2,3"
(format nil "~{~a=~a~^,~}" '(a 1 b 2 c 3)) ; => "A=1,B=2,C=3"
但在这个例子中,抑扬符抑制了一切:
(format nil "~:{~a=~a~^,~}" '((a 1) (b 2) (c 3))) ; => "A=1B=2C=3"
为什么以及如何解决它?
您需要嵌套迭代,以便内部迭代处理参数,外部迭代处理参数列表。然后可以转义外部迭代以抑制打印最后的逗号:
* (format nil "~{~{~A=~A~}~^, ~}" '((a 1) (b 2) (c 3)))
"A=1, B=2, C=3"