status: final (2006-06-20)
keywords: Data Structure, Multiple-Value Returns
library name: mu-and-nu
Unlike the
values
/call-with-values
mechanism of R5RS, this
SRFI uses an explicit representation for multiple return values as a
single value, namely a procedure. Decomposition of multiple values is
done by simple application. Each of the two macros, mu
and
nu
, evaluates to a procedure that takes one procedure
argument. The mu
and nu
can be compared with
lambda
. While lambda
expression that consists
of <formals> and <body> requires some actual arguments later
when the evaluated lambda
expression is called,
mu
and nu
expressions that consist of
<expression>s corresponding to actual arguments of
lambda
require <formals> and <body>, that is, an
evaluated lambda
expression, later when the evaluated
mu
and nu
expressions are called.
This SRFI also introduces new
let
-syntax depending on mu
and nu
to manipulate multiple values, alet
and alet*
that are compatible with let
and let*
of R5RS
in single value bindings. They also have a binding form making use of
values
and call-with-values
to handle multiple
values. In addition, they have several new binding forms for useful
functions such as escape, recursion, etc.