If the data definition for the input reveals several possible cases, e.g.
Data definition:then the function body will (almost always) be a cond with the same number of clauses:
A bank-balance is a number, falling into one of the categories:
- under $500.00
- at least $500.00 but under $1000.00
- at least $1000.00 but under $5000.00
- at least $5000.00
(define (interest-rate balance)
(cond [(< balance 500.00) ...]
[(and (>= balance 500.00)
(< balance 1000.00)) ...]
[(and (>= balance 1000.00)
(< balance 5000.00)) ...]
[(>= balance 5000.00) ...]))
Note that by taking advantage of the order of the tests, you can
frequently simplify them:
(define (interest-rate balance)
(cond [(< balance 500.00) ...]
[(< balance 1000.00) ...]
[(< balance 5000.00) ...]
[else ...]))