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 <eliz@gnu.org> wrote:
> From: Ship Mints <shipmints@gmail.com>
> 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.