Say I have a macro like
(defmacro repeat (times &body body)
(let ((x (gensym)))
`(dotimes (,x ,times)
,@body)))
Then I can run on the repl
CL-USER> (repeat 2 (print "Hi"))
"Hi"
"Hi"
NIL
If I run
CL-USER> (list 'print "Hi")
(PRINT "Hi")
So why can't I run
CL-USER> (repeat 2 (list 'print "hi"))
NIL
The backquote just gives me a list doesn't it? Is that not the same as what gets passed to the body parameter when I do not use a backquote (a list of s-expressions)?