構文: <test>、 <consequent>、 <alternate> は式でなければならない。
意味論: if 式は次のように評価される。まず、 <test> が評価される。これが真値(R6RS:翻訳:R6RS:5.7 Boolean values)であった場合には、 <consequent> が評価され、その値が返る。そうでなければ <alternate> が評価され、その値が返る。 <test> が #f を返し、 <alternate> が指定されていない場合、この式の評価結果は未規定である。
(if (> 3 2) ’yes ’no) ⇒ yes (if (> 2 3) ’yes ’no) ⇒ no (if (> 3 2) (- 3 2) (+ 3 2)) ⇒ 1 (if #f #f) ⇒ unspecified
if 式自体が末尾文脈にある場合、 <consequent> 式と <alternate> 式も末尾文脈にある。 R6RS:翻訳:R6RS:11.20 Tail calls and tail contexts 参照。