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