Major Section: ACL2-BUILT-INS
Example Forms: ; Returns the list (3 4): (mv-list 2 (mv 3 4)) ; Returns a list containing the three values returned by var-fn-count: (mv-list 3 (var-fn-count '(cons (binary-+ x y) z) nil)) General form: (mv-list n term)
Logically, (mv-list n term) is just term; that is, in the logic
mv-list simply returns its second argument. However, the evaluation of a
call of mv-list on explicit values always results in a single value,
which is a (null-terminated) list. For evaluation, the term n above (the
first argument to an mv-list call) must ``essentially'' (see below) be an
integer not less than 2, where that integer is the number of values returned
by the evaluation of term (the second argument to that mv-list call).
We say ``essentially'' above because it suffices that the translation of
n to a term (see trans) be of the form (quote k), where k is an
integer greater than 1. So for example, if term above returns three
values, then n can be the expression 3, or (quote 3), or even
(mac 3) if mac is a macro defined by (defmacro mac (x) x). But
n cannot be (+ 1 2), because even though that expression evaluates to
3, nevertheless it translates to (binary-+ '1 '2), not to
(quote 3).
Mv-list is the ACL2 analogue of the Common Lisp construct
multiple-value-list.
To see the ACL2 definition of this function, see pf.