Basic constructor macro for vars+modes structures.
(make-vars+modes [:vars <vars>] [:modes <modes>])
This is the usual way to construct vars+modes structures. It simply conses together a structure with the specified fields.
This macro generates a new vars+modes structure from scratch. See also change-vars+modes, which can "change" an existing structure, instead.
This is an ordinary
Macro:
(defmacro make-vars+modes (&rest args) (std::make-aggregate 'vars+modes args '((:vars) (:modes)) 'make-vars+modes nil))
Function:
(defun vars+modes (vars modes) (declare (xargs :guard (and (identifier-setp vars) (mode-setp modes)))) (declare (xargs :guard t)) (let ((__function__ 'vars+modes)) (declare (ignorable __function__)) (b* ((vars (mbe :logic (identifier-set-fix vars) :exec vars)) (modes (mbe :logic (mode-set-fix modes) :exec modes))) (cons :vars+modes (list (cons 'vars vars) (cons 'modes modes))))))