► |  | How to Design Programs Languages

1 | Beginning Student
2 | Beginning Student with List Abbreviations
3 | Intermediate Student
4 | Intermediate Student with Lambda
5 | Advanced Student
| Index

▼ | 5 | Advanced Student

5.1 | define
5.2 | define-struct
5.3 | define-datatype
5.4 | lambda
5.5 | Function Calls
5.6 | begin
5.7 | begin0
5.8 | set!
5.9 | delay
5.10 | shared
5.11 | let
5.12 | recur
5.13 | case
5.14 | match
5.15 | when and unless
5.16 | Primitive Operations
5.17 | Unchanged Forms

On this page:

case

top ← prev up next →

#### 5.13`` case

( case expr [(choice ...) expr] ... [(choice ...) expr])

A case form contains one or more “lines” that are surrounded by parentheses or square brackets. Each line contains a sequence of choices – numbers and names for symbols – and an answer expr. The initial expr is evaluated, and the resulting value is compared to the choices in each line, where the lines are considered in order. The first line that contains a matching choice provides an answer expr whose value is the result of the whole case expression. If none of the lines contains a matching choice, it is an error.

( case expr [(choice ...) expr] ... [ else expr])

This form of case is similar to the prior one, except that the final else clause is always taken if no prior line contains a choice matching the value of the initial expr. In other words, so there is no possibility to “fall off the end” of the case form.
top ← prev up next →