Revised(5) Report on the Algorithmic Language Scheme - Conditionals (primitive)

### 4.1.5 Conditionals

    Syntax:  (if <test> <consequent> <alternate>)
    Syntax:  (if <test> <consequent>)

Syntax: <Test>, <consequent>, and <alternate> may be arbitrary expressions.

Semantics: An if expression is evaluated as follows: first, <test> is evaluated. If it yields a true value (see section 6.3.1), then <consequent> is evaluated and its value(s) is(are) returned. Otherwise <alternate> is evaluated and its value(s) is(are) returned. If <test> yields a false value and no <alternate> is specified, then the result of the expression is unspecified.

      (if (> 3 2) 'yes 'no)           =>  yes
      (if (> 2 3) 'yes 'no)           =>  no
      (if (> 3 2)
          (- 3 2)
          (+ 3 2))                    =>  1