In a cond , each <clause> should be of the form
(<test> <expression1> ...)
where <test> is any expression. Alternatively, a <clause> may be
of the form
(<test> => <expression>)
The last <clause> may be an "else clause," which has the form
(else <expression1> <expression2> ...)
A cond expression is evaluated by evaluating the <test> expressions
of successive <clause> s in order until one of them evaluates to a
true value When a <test> evaluates to a true value, then the
remaining <expression> s in its <clause> are evaluated in order,
and the result(s) of the last <expression> in the <clause> is(are)
returned as the result(s) of the entire cond expression. If the
selected <clause> contains only the <test> and no <expression> s,
then the value of the <test> is returned as the result. If the
selected <clause> uses the => alternate form, then the
<expression> is evaluated. Its value must be a procedure that
accepts one argument; this procedure is then called on the value of
the <test> and the value(s) returned by this procedure is(are)
returned by the cond expression. If all <test>s evaluate to false
values, and there is no else clause, then the result of the
conditional expression is void; if there is an else clause,
then its <expression>|s are evaluated, and the value(s) of the last
one is(are) returned.
(cond ((> 3 2) 'greater)
((< 3 2) 'less)) => greater
(cond ((> 3 3) 'greater)
((< 3 3) 'less)
(else 'equal)) => equal
(cond ((assv 'b '((a 1) (b 2))) => cadr)
(else #f)) => 2
|