Keywords are like procedures, but often exhibit a different evaluation order.
(and exp1 exp2 ... expn)
— Evaluate each expression in turn until one of them returns false
or we run out expressions. In the former case, returns false
(#f
). In the latter case, returns the value of expn
.
(cond [guard0 exp0a exp0b ...] [guard1 exp1a exp1b ...] ... [else alt0 alt1 ... altn])
— Evaluate each guard in turn until one holds (is not false). Then evaluate
each of the corresponding expressions. Return the value of the last
corresponding expression. If none of the guards holds, evaluate each
of alt0
through altn
, returning the value of altn
.
(if guard consequent alternate)
— Evaluate guard
. If it holds (is not #f
), evaluate consequent
and return its value. If guard
evaluates to #f
, evavluate the
alternate
and return its value.
(or exp1 exp2 ... expn)
— Evaluate each expression in turn until one of them returns a
truish value (one that is not false). Return that value. If
all of the expressions return false, returns false.