cond
Be careful about parentheses and indenting with cond
. Notice
that the expressions within a test-action clause are indented by only one
character, but that's very significant. Without that indenting, a
cond
is very hard to read.
Suppose we replace the following awkward if expression with a cond.
;; awkward if expression requiring begins to sequence actions in branches (if (a) (begin (b) (c)) (begin (e) (f)))
We could write it like this:
(cond ((a) (b) (c)) (else (e) (f)))
Sometimes, when the clauses of a cond are small, a whole clause will be written out horizontally. The above example is likely to be written like this:
(cond ((a) (b) (c)) (else (d) (e)))
Also be careful about the parentheses around condition expressions.
Notice that the parentheses around (a)
are there because
the condition is call to a
with zero arguments, not because
you always put parentheses around the condition expression. (Notice
that there are no parentheses around #t
, and there wouldn't
be parentheses around a
if we just wanted to test the value
of the variable a
, rather than call it and test the result.)