1.1.6 keyword
条件式、述語
~条件式~
Lispには場合分け(case analysis)を記述する特殊形式cond(conditional),if,elseがある。
condの一般式は
(cond (<p1> <e1>) (<p2> <e2>) (<p3> <e3>))
となり、pには条件式がはいり、<p1>が真ならば<e1>の値を取り、偽なら<p2>を評価し、以下繰り返し。
絶対値absを定義する式は以下の様になる。
(define (abs x) (cond ((> x 0) x) ((= x 0) 0) ((< x 0) (- x)))
条件が全て偽なら定義は行われない。
またマイナス記号は単項で用いた場合(- x)、符号反転の役目を果たす。
elseとif式はC言語でお馴染み。説明はいらないと思われる。
(define (abs x) (cond ((< x 0) (- x) (else x)))
(define (abs x) (if (< x 0) (- x) x))
and,or,notも同様。
ただし、notは特殊形式ではないことに注意。
なぜならand,orは必ずしも全ての式を評価しないが、notは(not (< x y))のように必ず式を評価するから。
~述語(predicate)~
真と偽に評価される式、または真か偽を返す手続きのことを指す。
上記の<p1>,<p2>,...や、<,>,=などの基本的手続きも述語である。
また<e1>,<e2>,...を帰結式と呼ぶ。
0 件のコメント:
コメントを投稿