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