一个common lisp的宏问题

最近在学习common lisp. 发现了这个CFFI可以做对c动态库的链接. 其中, 它有这么一个宏用来在lisp中注册动态库中的函数

(defcfun (c-name lisp-name library) return-type &body args-type)

用起来就是

(defcfun ("Beep" beep kernel32) :int
  (windows-hwnd hwnd)
  (duration :int)
  (freq :int))

如果有很多函数要用,一个个注册显得不方便 因此我想写这样一个宏,一次性注册某个动态库下我想要的函数,比如这样

(defwin32funs kernel32
  (beep
    "Beep" :int
      (window-hwnd hwnd)
      (duration :int)
      (freq :int))
    (open-process
       ;; blabla……
))

想来想去没有什么好的方案,还望各位道友相助

(cons 'progn (loop for x in args collect `(defcfun (,second ,first ,library) ,third ,@rest))

厉害了,我就想着backquote和comma{,-at}了,看来思维太僵化也不行啊