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