if式
Lispプログラムは全てリストなので,if文といわずif式という.
if式はオペレータifと三つの引数テスト式,then式,else式から構成される.
(if テスト式 then式 else式 )テスト式の評価の結果が真ならthen式,偽ならelse式が評価される.これはLispの評価ルールにしたがっていない.すなわちifは特殊オペーレタである.
以下のサンプル"e;if-sample"e;は入力が真なら"e;hoge"e;,偽なら"e;fuga"e;を出力するものである.
(format t "~A" (if (read) "hoge" "fuga"))formatは出力オペレータで,真中のif式を評価した値を出力する.if式のテスト式はread入力オペレータで入力は式として評価される.したがって,nil以外を入力すればtest式で真が返る.if式はテスト式の評価値が真なら文字列"hoge"を返し,偽なら文字列"fuga"を返す.以下実行結果.
$> clisp if-sample aaa hogeこのようにnil以外を入力すると,then式が評価される.
$> clisp if-sample nil fugaこのようにnilを指定するとelse式が評価される.
$> clisp if-sample 'nil hogeread式の話になるが,このようにnilをクオートして渡すと評価値はシンボルnilとなりthen式が評価される.else式は省略可能で,その場合
(if テスト式 then式 nil)と等価である.