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