2020年5月19日火曜日

if文に隠蔽される処理

 たとえば、変数の値によって関数の呼び出しをかえるような処理は、普通のプログラミング言語だと

 if(変数A == 999){
    処理関数(1);
}  else {
    処理関数(2);
}

 みたいな書き方をする。
 もちろん、Lisp系でも同じような書き方ができるけれど

( if (= 変数A 999)
    (処理関数 1)
    (処理関数 2))

 こんな書き方もできる。

(処理関数 ( if (= 変数A 999)
              1
              2))

 後者の方が見易いような気がする。というのも

(処理A)
( if (条件)
    (処理B 1)
    (処理B 2))
(処理C)

 となっていると、if文の中に処理がほんのわずかに隠されて処理の流れが見づらなるような。

(処理A)
(処理B ( if (条件)
           1
           2))
(処理C)

 ね?