Major Section: ACL2-BUILT-INS
Mv
is the mechanism provided by ACL2 for returning two or more values.
Logically, (mv x1 x2 ... xn)
is the same as (list x1 x2 ... xn)
, a
list of the indicated values. However, ACL2 avoids the cost of building this
list structure, with the cost that mv
may only be used in a certain style
in definitions: if a function ever returns using mv
(either directly, or
by calling another function that returns a multiple value), then this
function must always return the same number of values.
For more explanation of the multiple value mechanism, see mv-let. Also see mv-list for a way to convert a multiple value into an ordinary list.
ACL2 does not support the Common Lisp construct values
, whose logical
meaning seems difficult to characterize. Mv
is the ACL2 analogue of that
construct.