schemeまとめ(3:分岐その他もろもろ) | SU-Ⅲ 電脳紀 Second

SU-Ⅲ 電脳紀 Second

基本的に雑記ですが、情報系の事も書きます。

分岐

condとifがある。まずはcond文。

(cond 
((述語) (式))
((述語) (式))
((述語) (式))
:
:
)


述語はC言語とかでifの()の中に書くやつ。
上から見ていき、一番最初にこの条件をクリアした部分の式が実行される。

述語としてSchemeには =,<,>,<=,>=,and,or,notが使える。
DrRacketではeven? odd?も使える。
一番左の記号から評価というのはこれらも変わらず、括弧で囲った一番左に記述する。
例えば100で割った余りが0と等しいかどうかはこう書く。
(= (remainder 100 10) 0)

これは真である。racketでは#tが返ってくるのが確認できる。
もし偽であれば#fが返ってくる。

繰り返すとcond文は複数の述語と式の組み合わせの内上から見て行って最初に#tとなる場所の式を評価し、その結果を返す

if文は
(if (述語) 
(式1)
  (式2)
)

となる。
述語を評価しそれが#tであれば式1を、そうでなければ式2を評価しその結果を返す


どちらを使っても同じことができるが、複数分岐する場合は入れ子しすぎると視覚的に分かりにくくなるのでcondのほうが書きやすいかも。