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