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