ファイヤープロジェクト
if式
2003-07-20T15:13+09:00   matsu
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
hoge
read式の話になるが,このようにnilをクオートして渡すと評価値はシンボルnilとなりthen式が評価される.else式は省略可能で,その場合
(if テスト式
    then式
    nil)
と等価である.
matsu(C)
Since 2002
Mail to matsu