Common lisp 在公共Lisp/WM中定义宏时遇到问题

Common lisp 在公共Lisp/WM中定义宏时遇到问题,common-lisp,stumpwm,Common Lisp,Stumpwm,我试图定义一个创建命令的宏。到目前为止,我有以下几点: (defmacro创建命令(命令名) `(defcommand,name() (运行shell命令,命令) )) (创建命令“firefox”firefox) 基本上,我想创建一个名为“firefox”的命令,它只是启动“firefox”。当我尝试运行该命令时,出现以下错误: Bad Argument Type: RUN-SHELL-COMMAND. 知道发生了什么事吗?谢谢大家! 有两个参数列表,不是一个;第二个列表定义如何以交互方式

我试图定义一个创建命令的宏。到目前为止,我有以下几点:

(defmacro创建命令(命令名)
`(defcommand,name()
(运行shell命令,命令)
))
(创建命令“firefox”firefox)
基本上,我想创建一个名为“firefox”的命令,它只是启动“firefox”。当我尝试运行该命令时,出现以下错误:

Bad Argument Type: RUN-SHELL-COMMAND.
知道发生了什么事吗?谢谢大家!

有两个参数列表,不是一个;第二个列表定义如何以交互方式读取第一个列表中的argent。在您的案例中,没有参数,但您遗漏了一个空列表:

(defmacro create-command (command name)
  `(defcommand ,name () ()
      (run-shell-command ,command)))


STUMPWM-USER> (create-command "firefox" firefox)
#S(STUMPWM::COMMAND :NAME FIREFOX :CLASS T :ARGS NIL)

该死的,你是对的。我不知道我怎么会错过。谢谢