Yessir. This fails, too, in the same way when I expect it to work: (setq (intern (concat "f" "oo"))) t) On Fri, Oct 18, 2024 at 11:00 AM Eli Zaretskii wrote: > > From: Ship Mints > > Date: Fri, 18 Oct 2024 10:40:47 -0400 > > > > (defmacro my/setq (name value) > > (let ((sym (intern name))) > > `(setq ,sym ,value))) > > (defvar foo nil) > > (my/setq "foo" t) ; this works > > (intern (concat "f" "oo")) ; this works > > (my/setq (concat "f" "oo") t) ; this fails with... > > > > Debugger entered--Lisp error: (wrong-type-argument stringp (concat "f" > "oo")) > > intern((concat "f" "oo")) > > (let ((sym (intern name))) (list 'setq sym value)) > > (closure (t) (name value) (let ((sym (intern name))) (list 'setq sym > value)))((concat "f" "oo") t) > > macroexpand((my/setq (concat "f" "oo") t)) > > elisp--eval-last-sexp(nil) > > my/setq is a macro, not a function. >