问一个 elisp 宏的问题

(defmacro defvar/os (id &rest args)
  (let ((arglen (length args))
        plist)
    (unless (and (evenp arglen)
		 (> arglen 0))
      (error "wrong number of arguments: %s" arglen))
    (while args
      (push (list
             (pcase (pop args)
               (:windows ''windows-nt)
               (:macos ''darwin)
               (:linux ''gnu/linux))
             (pop args))
            plist)
      )
    `(defvar ,id
       (pcase system-type
	 ,@plist
	 ))))