is equivalent to:
(if (test1 argument argument)
+ ; then
result1
+ ; else
(if (test2 argument argument)
+ ; then
result2
+ ; else
(if (test3 argument argument)
+ ; then
result3
+ ; else
result4)))
Some other Scheme details:
* `#t` is true and `#f` is false
* `(lambda () ...)` constructs a thunk
+ * there is no difference in meaning between `[...]` and `(...)`; we just sometimes use the square brackets for clarity
* `'(1 . 2)` and `(cons 1 2)` are pairs (the same pair)
* `(list)` and `'()` both evaluate to the empty list
* `(null? lst)` tests whether `lst` is the empty list