Thank you,
Andrei
Remember, programs are Lisp data - not lines of text.
You can manipulate the programs with ordinary functions
like MAPCAR and LIST.
(defmacro write-strings (&rest strings)
`(progn
,@(mapcar (lambda (string)
(list 'write-string string))
strings)))
CL-USER 4 > (macroexpand '(write-strings "foo" "bar" "baz"))
(PROGN (WRITE-STRING "foo") (WRITE-STRING "bar") (WRITE-STRING "baz"))
T